SuperUser по умолчанию не добавляется в базу данных при запуске - PullRequest
0 голосов
/ 06 мая 2019

Я добавил 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.

1 Ответ

0 голосов
/ 06 мая 2019

Пытался изменить это:

var user = new ApplicationUser();
user.UserName = "Admin";
user.Email = "admin@transsafe.co.nz";

На это:

var user = new ApplicationUser { UserName = "Transsafe", UserOrganisation = "Transsafe" };

И сначала все работало нормально. Затем, когда я проверил, это снова не удалось. Открыта для любых идей.

...