【问题标题】:Asp.net MVC 5 can't get user rolesAsp.net MVC 5 无法获取用户角色
【发布时间】:2015-07-17 15:40:53
【问题描述】:

我正在尝试获取用户角色并对其进行修改。 我尝试了很多方法来获取用户角色,但没有任何效果。 有什么遗漏吗? 我可以获得正确的用户实体,但角色始终为空。 有没有办法正确地做到这一点? 谢谢

var user = UserManager.Users.Single(u=>u.Id==id);
var roles = user.Roles;
roles.Add(....)


var user = UserManager.Users.Single(u=>u.Id==id);
user.IsinRole("rolename");

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-membership asp.net-identity


    【解决方案1】:

    您可以通过声明获得它们:

    var roles = ((ClaimsIdentity)User.Identity).Claims
                .Where(c => c.Type == ClaimTypes.Role)
                .Select(c => c.Value);
    

    要将用户添加到角色,您可以执行以下操作(确保该角色存在于数据库中):

    var roleresult = UserManager.AddToRole(currentUser.Id, "RoleName");
    

    【讨论】:

    • 谢谢,但我正在使用管理员权限并想修改其他用户角色,我尝试将 (ClaimsIdentity)User.Identity) 替换为 user.Claims(来自我的第一行代码)还是不行,有什么办法解决吗?
    • @Neardreams 没有问题,只需使用 UserManager 从角色中添加和删除任何用户
    • 非常感谢! UserManger.GetRoles(),UserManger.RemoveFromRole(),UserManager.AddToRole() 这些方法有效。
    • @Neardreams 没问题,很高兴我能提供帮助。如果这是答案,请点击它旁边的勾号以标记为正确。欢迎来到 SO!
    猜你喜欢
    • 2016-12-03
    • 1970-01-01
    • 2015-02-01
    • 2019-08-22
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 2018-09-18
    • 2021-12-27
    相关资源
    最近更新 更多