nelle migrazioni classe di configurazione, v'è il metodo dei semi, e sembra che:ASP.net MVC + ASP.net Identità Semina ruoli e utenti
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");
}
}
}
E poi in consolle PM Ho eseguito update-base di dati , e ha seminato correttamente il database, e nella tabella AspNetUserRoles posso vedere che utenteUnità utente e ruolo di amministratore sono connessi.
Ma quando ho messo attribuisco [Authorize(Roles = "Administrator")]
sopra regolatore Sono stato reindirizzato a pagina di login, come se il mio utente non fosse in quel ruolo, così ho aggiunto la linea in mio controller:
var x = _userManager.IsInRole(_userManager.FindByName("someUserName").Id, "Administrator");
E x è falso. Perché sta succedendo ? E come posso ripararlo? E se questo non è il modo corretto di database di seed, che è?