遷移中配置類,還有種方法,它看起來像:ASP.net MVC + ASP.net身份播種角色和用戶
protected override void Seed(DatabaseContext context)
{
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
var userManager = new UserManager<User>(new UserStore<User>(context));
if (!roleManager.RoleExists("Administrator"))
{
roleManager.Create(new IdentityRole("Administrator"));
}
var user = new User {UserName = "someUserName"};
if (userManager.FindByName("someUserName") == null)
{
var result = userManager.Create(user, "password");
if (result.Succeeded)
{
userManager.AddToRole(user.Id, "Administrator");
}
}
}
然後在下午控制檯我已經運行更新數據庫,並且它成功播種了數據庫,並且在表AspNetUserRoles中,我可以看到用戶someUserName和Administrator角色已連接。
但是當我把屬性[Authorize(Roles = "Administrator")]
上述控制器我被重定向到登錄頁面,就好像我的用戶在那個角色是不是,所以我在我的控制器中加入一行:
var x = _userManager.IsInRole(_userManager.FindByName("someUserName").Id, "Administrator");
而且x是錯誤的。這是爲什麼發生?我該如何解決它?如果這不是種子數據庫的正確方法,那是什麼?