【问题标题】:Get User Roles in GET method在 GET 方法中获取用户角色
【发布时间】:2020-07-12 09:18:36
【问题描述】:

我正在使用 JwtToken 和 Angular 8 应用程序实现的 .net Core 2.2 中的 api REST。 我正在尝试让用户角色将其显示给管理员并提供编辑此用户角色的可能性,但该角色没有出现

    [HttpGet]
    [Authorize]
    //GET: /api/UserProfile
    public async Task<Object> GetUserProfile()
    {
        string userId = User.Claims.First(c => c.Type == "UserId").Value;
        var user = await _userManager.FindByIdAsync(userId);
        var role = await _userManager.GetRolesAsync(user);
        return new
        {                
            user.Email,
            user.UserName,
            user.Role,
        };

    }

【问题讨论】:

  • 我不确定您是否只是在问题中打错了字,但 Asp.Net Identity 中的用户没有“角色”属性。也许您的意思是在匿名返回中说“角色”而不是“user.Role”?

标签: rest jwt asp.net-identity angular8 asp.net-core-2.2


【解决方案1】:

如您所知,用户没有role 属性。此外,每个用户都有许多角色。如果您始终为每个用户指定一个角色,请选择用户的角色,如下所示:

    [HttpGet]
[Authorize]
//GET: /api/UserProfile
public async Task<Object> GetUserProfile()
{
    string userId = User.Claims.First(c => c.Type == "UserId").Value;
    var user = await _userManager.FindByIdAsync(userId);
    var role = await _userManager.GetRolesAsync(user);
    return new
    {                
        user.Email,
        user.UserName,
        role = role.FirstOrDefault() ,
    };

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2020-09-18
    • 1970-01-01
    • 2019-11-29
    • 2014-05-02
    • 2014-08-14
    • 2019-05-21
    相关资源
    最近更新 更多