In Migrations Configuration class, there is Seed method, and it looks like:
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");
}
}
}
And then in PM console I've run update-database, and it successfully seeded database, and in table AspNetUserRoles I can see that user someUserName and Administrator role are connected.
But when I put attribute [Authorize(Roles = "Administrator")] above controller I've been redirected to log in page as if my user wasn't in that role, so I've added line in my controller:
var x = _userManager.IsInRole(_userManager.FindByName("someUserName").Id, "Administrator");
And x is false. Why is this happening ? And how can I fix it ? And if this isn't proper way to seed database, which is ?