Я добавил asp.net Identity в свое приложение, и я настроил свой класс запуска для добавления ролей (если их нет) и добавления SuperUser по умолчанию.
Моя проблема заключается в том, что при запуске приложения, он создает роли в базе данных согласно коду, но не добавляет детали SuperUser.
Что мне не хватает?
Я следовал инструкциям здесь: https://code.msdn.microsoft.com/ASPNET-MVC-5-Security-And-44cbdb97
Я также удалил строки в таблице AspNetRoles и проверил, что они были воссозданы при запуске, что показывало, что функция вызывается при запуске.
В файле startup.cs
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
createRolesandUsers();
}
private void createRolesandUsers()
{
ApplicationDbContext context = new ApplicationDbContext();
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
// In Startup i am creating first Super Role and creating a default Super User
if (!roleManager.RoleExists("Super"))
{
// first we create Admin role
var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
role.Name = "Super";
roleManager.Create(role);
//Here we create a Admin super user who will maintain the website
var user = new ApplicationUser();
user.UserName = "Admin";
user.Email = "admin@transsafe.co.nz";
string userPWD = "L1llo1.";
var result = UserManager.Create(user, userPWD);
//Add default User to Role Admin
if (result.Succeeded)
{
var result1 = UserManager.AddToRole(user.Id, "Super");
}
}
// creating Creating Manager role
if (!roleManager.RoleExists("Administrator"))
{
var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
role.Name = "Administrator";
roleManager.Create(role);
}
// creating Creating Manager role
if (!roleManager.RoleExists("Manager"))
{
var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
role.Name = "Manager";
roleManager.Create(role);
}
// creating Creating Employee role
if (!roleManager.RoleExists("User"))
{
var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
role.Name = "User";
roleManager.Create(role);
}
}
}
Я ожидаю, что пользователь "Admin" будет в таблице AspNetUsers, а также роли, созданные в таблице AspNetRoles.