Search code examples
c#asp.netidentityroles

UserManager.GetRolesAsync() method


i want to add user role to claims

var claims = new[]
            {
                new Claim("Email", model.Email),
                new Claim(ClaimTypes.NameIdentifier, user.Id),
                new Claim(ClaimTypes.Role, _userManger.GetRolesAsync(user).ToString())
                
            };

but this method doesn`t work. how can I get role name as string?


Solution

  • Something like this might work for you,

    var roles = await _userMgr.GetRolesAsync(user);
    var claims = new List<Claim>();
    
    claims.Add(new Claim("Email", model.Email));
    claims.Add(new Claim(ClaimTypes.NameIdentifier, user.Id));
    foreach (var role in roles)
    {
       claims.Add(new Claim(ClaimTypes.Role, role));
    }
    

    GetRolesAsync(user) returns a List of role names (strings) there may be more than 1.