私はしばらくの間ウェブサイトに取り組んできました。正しく機能しているメンバーシップ、ロール、およびプロファイルプロバイダーを使用しています。
ユーザーが登録できる標準の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テーブルに手動で追加すると、意図したとおりにメンバーページにアクセスできなくなります。新しく作成されたユーザーは、表示できないはずのすべてのページを表示できますが、どのロールにも追加されません。これは私をびっくりさせています!