【问题标题】:How to add user to role using UserId and RoleId of Asp.net core identity如何使用 Asp.net 核心身份的 UserId 和 RoleId 将用户添加到角色
【发布时间】:2020-01-08 07:12:59
【问题描述】:

喜欢,

usermanager.AddUserToRole(userrole.UserId, userrole.RoleId);

我被困在这里,任何人都可以帮助将用户添加到特定公司的特定角色(多租户)

【问题讨论】:

    标签: asp.net-core asp.net-identity


    【解决方案1】:

    这是一个关于如何为用户添加角色的简单演示:

    1.控制器:

    public class HomeController : Controller
    {
        private readonly RoleManager<IdentityRole> _roleManager;
        private readonly UserManager<IdentityUser> _userManager;
        public HomeController(RoleManager<IdentityRole> roleManager, UserManager<IdentityUser> userManager)
        {
            _roleManager = roleManager;
            _userManager = userManager;
        }
    
        public async Task CreateRolesandUsers()
        {
    
            bool x = await _roleManager.RoleExistsAsync("Admin");
            if (!x)
            {
                // first we create Admin role   
                var role = new IdentityRole();
                role.Name = "Admin";
                await _roleManager.CreateAsync(role);                                            
            }
            //Then we create a user 
            var user = new IdentityUser();
            user.UserName = "default";
            user.Email = "default@default.com";
            string userPWD = "122@Xsdf";
    
            IdentityResult chkUser = await _userManager.CreateAsync(user, userPWD);
    
            //Add default User to Role Admin    
            if (chkUser.Succeeded)
            {
                var result = await _userManager.AddToRoleAsync(user, "Admin");
            }
        }
    }
    

    2.Startup.cs:

    services.AddIdentity<IdentityUser, IdentityRole>()
    //services.AddDefaultIdentity<IdentityUser>()
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultUI()
                .AddDefaultTokenProviders();
    

    【讨论】:

      【解决方案2】:

      在这种情况下,解决方案是添加带有角色表 (n-n) 的租户表映射。当客户端查询 userInfo 时,在将 userInfo 映射到角色之前检查租户

      【讨论】:

      • 嗨,我已经添加了租户和角色表的映射,但是在将租户 1 的用户添加到租户 1 的角色(管理员)时,它不允许我使用 userManager.AddToRoleAsync 添加,因为它需要用户和角色名称参数.在我的项目中,AspNetRoles 表中有多个管理员角色,即 1 个租户,1 个管理员角色,所以我需要 roleId 将用户添加到特定租户的管理员角色。那么如何实现呢?
      • 嗯...我不知道您对这个解决方案有什么问题。如果你的项目有多个管理员角色,主键是role_name +tenantId -> 它解决了你的问题
      • 好的,那么如何使用/修改 UserManager 的 AddToRoleAsync(TUser, String roleName) 方法将用户角色映射信息添加到 aspNetUserRoles 表中
      • 您必须修改 AspNetRoles 表约束名称唯一。本主题修改AddToRoleAsync方法的解决方案stackoverflow.com/questions/29071800/…
      • 您好,君,感谢您的快速帮助。我将通过解决方案,看看它是否适用于我的解决方案。肯定会给你声誉:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 2016-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      相关资源
      最近更新 更多