Home > Enterprise >  How to get Role Claims in asp.net core 6 web api?
How to get Role Claims in asp.net core 6 web api?

Time:12-07

I try to get RoleClaims from ASP.NET CORE Identity and my code is

        [HttpGet]
        public async Task<IActionResult> GetAllRoleClaims(string email)
        {
            var user = await _userManager.FindByEmailAsync(email);
            var role= await _userManager.GetRolesAsync(user);
            var roleclaim = await _roleManager.GetClaimsAsync(role);
           // var roleclaim = await _roleManager.GetClaimsAsync((IdentityRole)role);


            return Ok(roleclaim);
        }

it give me the error cannot convert from 'System.Collections.Generic.IList' to 'Microsoft.AspNetCore.Identity.IdentityRole' the Error is at this section

var roleclaim = _roleManager.GetClaimsAsync(role); the GetClaimsAsync(role) function does not accept the role and give the above error and when I use this var roleclaim = _roleManager.GetClaimsAsync((IdentityRole)role); for conversion it give me another error at runtime Unable to cast object of type 'System.Collections.Generic.List`1[System.String]' to type 'Microsoft.AspNetCore.Identity.IdentityRole'. Can anyone help me how to getRoleClaims from .net core Identity using roleManager????

CodePudding user response:

In your code,

var role= await _userManager.GetRolesAsync(user);

Returns a list of role names (strings), e.g. ["admin", "user"].

Now, use the role name (string) to get the role object if your user only has one role,

var role = await _roleManager.FindByNameAsync(role.First());

Then, pass the role to get the claims,

var roleclaim = _roleManager.GetClaimsAsync(role);
  • Related