我找到了 this answer 但它似乎不适合我的 ASP Net Core 项目。

我试图理解的事情:

  • 如何添加自定义角色。我什至直接查看了我的 MySQL 数据库(表 aspnetroles ),但我不知道使用什么作为 IdConcurrencyStamp
  • 在哪里放置代码以使用这些新角色为数据库提供种子:在 Startup 中?在 Register 下的 AccountController 中?
  • 如何将这个新角色绑定(bind)到用户?我什至查看了表格,但不知道如何分配数据(没有 user2roleaspnetusers.role_id )。
  • 最佳答案

    您可以通过在启动类中创建一个 CreateRoles 方法来轻松完成此操作。这有助于检查角色是否已创建,如果没有,则创建角色;在应用程序启动时。像这样。

    private async Task CreateRoles(IServiceProvider serviceProvider)
        {
            //adding customs roles : Question 1
            var RoleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
            var UserManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
            string[] roleNames = { "Admin", "Manager", "Member" };
            IdentityResult roleResult;
    
            foreach (var roleName in roleNames)
            {
                var roleExist = await RoleManager.RoleExistsAsync(roleName);
                if (!roleExist)
                {
                    //create the roles and seed them to the database: Question 2
                    roleResult = await RoleManager.CreateAsync(new IdentityRole(roleName));
                }
            }
    
            //Here you could create a super user who will maintain the web app
            var poweruser = new ApplicationUser
            {
                UserName = Configuration["AppSettings:UserName"],
                Email = Configuration["AppSettings:UserEmail"],
            };
    
            string userPWD = Configuration["AppSettings:UserPassword"];
            var _user = await UserManager.FindByEmailAsync(Configuration["AppSettings:AdminUserEmail"]);
    
           if(_user == null)
           {
                var createPowerUser = await UserManager.CreateAsync(poweruser, userPWD);
                if (createPowerUser.Succeeded)
                {
                    //here we tie the new user to the role : Question 3
                    await UserManager.AddToRoleAsync(poweruser, "Admin");
    
                }
           }
        }
    

    然后您可以从 Startup 类中的 await CreateRoles(serviceProvider); 方法调用 Configure 方法。
    确保您在 IServiceProvider 类中有 Configure 作为参数。

    编辑:
    如果您使用的是 ASP.NET core 2.x,我的这篇文章提供了非常详细的体验。
    here

    关于c# - 如何向 ASP.NET Core 添加自定义角色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42188927/

    10-16 10:31