В Миграции классе Configuration, есть метод Семя, и это выглядит следующим образом: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 и роль администратора связаны.
Но когда я ставлю атрибут [Authorize(Roles = "Administrator")]
выше контроллера я был перенаправлен войти в странице, как если бы мой пользователь не был в этой роли, поэтому я добавил строку в моем контроллере:
var x = _userManager.IsInRole(_userManager.FindByName("someUserName").Id, "Administrator");
И x - false. Почему это происходит ? И как я могу это исправить? И если это не правильный способ для загрузки базы данных?