播种管理数据库角色不添加



我在让管理员用户担任管理员角色方面存在一些问题。创建用户后,它成功了,我尝试使用addToroleasync添加admin角色。但是我不确定为什么不添加它。然后,我尝试进行检查,以便如果管理员没有管理员角色,它将添加它。它看起来像命令执行,但我看不到它将其添加到数据库中。

这是我的代码:

public async Task CreateAdmin()
{
       // Add roles
       string[] roles = new string[] {"Administrator", "User"};
       foreach(string role in roles)
       {
           bool result = await _roleManager.RoleExistsAsync(role);
           if(!result)
           {
               await _roleManager.CreateAsync(new IdentityRole(role));
           }
       }
       // Add admin user
       if (!_context.Users.Any(u => u.UserName == "Admin"))
       {
           var user = new Users
           {
               Email="admin@admin.com",
               NormalizedEmail="ADMIN@ADMIN.COM",
               UserName="admin@admin.com",
               NormalizedUserName="ADMIN",
               EmailConfirmed = true,
           };
           var result = await _userManager.CreateAsync(user, "Password123");
       }
       var adminuser = await _userManager.FindByEmailAsync("admin@admin.com");
       bool flag = await _userManager.IsInRoleAsync(adminuser, "Administrator");
       if(!flag)
       {
           var role = await _roleManager.FindByNameAsync("Administrator");
           await _userManager.AddToRoleAsync(adminuser, "Administrator");
            }
   }

如果您想要完整的dbintilizer或更多代码,请让我知道。

有人知道我做错了什么?

编辑重新工作以跟随此http://www.locktar.nl/programming/net-core/seed-database-users-roles-dotnet-core-2-0-ef/现在它有效。

这就是我的方式。

public async Task InitializeDatabase(IApplicationBuilder app)
    {
        using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
        {
            // Create DB
            serviceScope.ServiceProvider.GetRequiredService<ApplicationDbContext>().Database.Migrate();
            // Add roles
            var roleManager = serviceScope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole<long>>>();
            if (!roleManager.Roles.Any())
            {
                foreach (var role in Config.GetTestRolls())
                {
                    await roleManager.CreateAsync(role);
                }
            }
            // Add users
            var userManager = serviceScope.ServiceProvider.GetRequiredService<UserManager<ApplicationUser>>();
            if (userManager.Users.Any()) return;
            foreach (var user in Config.GetTestUsers())
            {
                await userManager.CreateAsync(user, "Password123!");
            }
            // find first user add to first role (hack) 
            var adminUser = await userManager.FindByEmailAsync(Config.GetTestUsers().FirstOrDefault()?.Email);
            if (adminUser != null)
            {
                await userManager.AddToRoleAsync(adminUser, Config.GetTestRolls().FirstOrDefault()?.Name);
            }

        }

从我的github项目中撕下的代码

相关内容

  • 没有找到相关文章

最新更新