0

私はしばらくの間ウェブサイトに取り組んできました。正しく機能しているメンバーシップ、ロール、およびプロファイルプロバイダーを使用しています。

ユーザーが登録できる標準のcreateuserwizardコントロールがあります。ユーザーが登録するときに、次のような特定の役割にユーザーを追加します。

Roles.AddUserToRole(Profile.UserName, "Member");

これは、userCreatedイベントトリガーを介して行います。

管理者がユーザーの役割を変更できるようにする必要がある管理ページもあります。私は次のようにしました。

DropdownList ddl = ((DropDownList)sender);
String usr = ddl.enter code here
if (Roles.IsUserInRole(usr, "Member")) {
    Roles.RemoveUserFromRole(usr, "Member");
}
if (Roles.IsUserInRole(usr, "Visitor")) {
...

switch (ddl.selectedIndex)
  case 0:
    Roles.AddUserToRole(usr, "Admin");
  case 1:
    ...

これも機能しません。データベース自体に移動すると、ユーザーはaspnet_UserInRolesに追加されませんでした。

追加の詳細:ユーザーを作成すると、意図されていない管理ページが表示されます。セキュリティトリミングが正しく機能しています。ユーザーをaspnet_UsersInRolesテーブルに手動で追加すると、意図したとおりにメンバーページにアクセスできなくなります。新しく作成されたユーザーは、表示できないはずのすべてのページを表示できますが、どのロールにも追加されません。これは私をびっくりさせています!

4

1 に答える 1

0

よし、登録後に役割が割り当てられない問題を修正しました。ユーザーがログインした後に userCreated が呼び出されると思うかもしれませんが、そうではありません。Profile.UserName は空の文字列になります!

私はまだ管理ページに問題があります...ドロップダウンリストのツールチップからユーザー名の値を取得します。ddl にカーソルを合わせると、ユーザー名が実際に tooltip 属性にあることを視覚的に確認できます。

同じ問題がここに存在すると仮定すると、-> usr (ユーザー名) 文字列が空です。値を取得できないのはなぜですか?

于 2012-11-17T20:11:38.047 に答える