如何将角色声明包含在访问令牌中



我使用 identityserver4 和 asp.net identity 保护我的 API。标识数据库具有表角色和角色声明。对于我的安全模型,我需要具有她角色声明的角色。我包含访问令牌的角色,但我不明白如何包含角色声明。

//Example of API with roles
new ApiResource("api1", "My API")
{
   UserClaims = new []{ "name", "role" }
}

我在这里回答了如何在访问令牌中包含角色。如果要另外包含角色声明,则需要使用 RoleManager .

public async Task GetProfileDataAsync(ProfileDataRequestContext context)
{
    context.IssuedClaims.AddRange(context.Subject.Claims);
    var user = await _userManager.GetUserAsync(context.Subject);
    var roles = await _userManager.GetRolesAsync(user);
    foreach (var role in roles)
    {
        var roleClaims = await RoleManager.GetClaimsAsync(role);
        context.IssuedClaims.Add(new Claim(JwtClaimTypes.Role, role)); //Adds "role" claim
        context.IssuedClaims.AddRange(roleClaims); //Adds other role claims
    }
}

相关内容

  • 没有找到相关文章

最新更新