Asp.net 标识无法将用户添加到角色


    public void AddUserToRole(Guid userId, string roleName)
    {
        var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(DbContext));
        var user = userManager.FindById(userId.ToString());
        userManager.AddToRole(user.Id, roleName);
        DbContext.SaveChanges();
    }

我尝试将用户添加到如上所示的角色。但是它不起作用,因为当尝试转到以下控制器操作时:

 [AuthorizeUser(Roles = RoleEnums.UserWithProfile)]
 public ActionResult Index(Guid? userProfileId)
 {
 }

它无法授权。奇怪的是,它成功地设法授权添加到数据库种子设定中的用户。

private void SeedUserRoles(List<ApplicationUser> applicationUsers, DbContext dbContext)
        {
            var userStore = new UserStore<ApplicationUser>(dbContext);
            var userManager = new UserManager<ApplicationUser>(userStore);
            userManager.AddToRole(applicationUsers[0].Id, RoleEnums.UserWithProfile);
            userManager.AddToRole(applicationUsers[1].Id, RoleEnums.UserWithProfile);
            userManager.AddToRole(applicationUsers[2].Id, RoleEnums.UserWithProfile);
            userManager.AddToRole(applicationUsers[3].Id, RoleEnums.User);
        }
    private void CreateRoles(DbContext context)
    {
        var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
        if (!roleManager.RoleExists(RoleEnums.Admin))
        {
            var role = new IdentityRole { Name = RoleEnums.Admin };
            roleManager.Create(role);
        }
        if (!roleManager.RoleExists(RoleEnums.User))
        {
            var role = new IdentityRole { Name = RoleEnums.User };
            roleManager.Create(role);
        }
        if (!roleManager.RoleExists(RoleEnums.UserWithProfile))
        {
            var role = new IdentityRole { Name = RoleEnums.UserWithProfile };
            roleManager.Create(role);
        }
    }

我在这里错过了什么?方法AddUserToRole()不正确,为什么只有种子给我正确的行为?

编辑:ASP.NET 身份检查用户角色不起作用,发现这似乎是这里的问题。但我不希望用户必须手动注销并再次登录。他们提到了一些关于更新安全印章的事情,但这对我不起作用。

编辑2:请参阅我发布的答案,了解我最终得到的解决方案。

AddToRole 返回一个 IdentityResult。 您需要检查此返回值是否存在字符串的 Errors 集合中的错误。

https://msdn.microsoft.com/en-us/library/dn497483(v=vs.108).aspx

还应该检查您实际获得用户的 FindById 的返回。

MVC 5 AddToRole 需要注销才能工作?

最终使用了这个问题中的解决方案,因为它是我能找到的最简单的解决方案。

相关内容

  • 没有找到相关文章

最新更新