シード メソッドでいくつかのデータを作成しています。いくつかの権限 (役割) を持つ少数のユーザーを作成しています
WebSecurity.InitializeDatabaseConnection("MibContext", "UserProfile", "UserId", "UserName", autoCreateTables: true);
Roles.CreateRole(Constants.Roles.Administrator);
Roles.CreateRole(Constants.Roles.ContentManager);
Roles.CreateRole(Constants.Roles.KeyAccountManager);
次に、ユーザー名の変数を用意します(タイプミスの可能性を避けるため)
var adminusername = "admin@domain.com";
var userusername = "user@domain.com";
EF と UnitOfWork パターンを使用して Userprofile レコードを作成します
var admin = new UserProfile
{
FirstName = "Admin",
LastName = "Account",
UserName = adminusername
};
unitOfWork.UserRepository.Insert(admin);
unitOfWork.Save();
次に、ユーザー メンバーシップ アカウントを作成し、役割を割り当てます。
WebSecurity.CreateAccount(adminusername, "123456");
WebSecurity.CreateAccount(userusername, "123456");
Roles.AddUserToRole(userusername, Constants.Roles.Administrator);
Roles.AddUserToRole(userusername, Constants.Roles.KeyAccountManager);
最後のロール コマンドにより、エラー、UsersInRoles と UserProfile 間の外部キー違反が発生します。ロールを最初のユーザーにマップできるため、これは非常に奇妙です (最初は管理者ユーザーでしたが、そのユーザーのアクセス許可を作成できるかどうかを確認したかったので、実際に実行しました)。
次に、何が起こっているのかを確認するために外部キー制約を削除し、そこに 3 を入れました。4 番目の役割を繰り返し追加してテストすると、(ユーザー名、役割) パラメーターが間違っているようです!?!? 新しいロールには Id=4 があり、テストを繰り返すと、それが UserId 列に入力されます。
RoleId UserId
2 1
2 4
NULL NULL
役割が構成されています。
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
<providers>
<clear/>
<add name="SimpleRoleProvider"
type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
</providers>
</roleManager>
何か不足していますか?