Вы можете напрямую запросить базу данных для получения идентификатора и имени роли текущего пользователя.
Внедрить ApplicationDbContext
в контроллер:
private readonly ApplicationDbContext _applicationDbContext;
public HomeController(ApplicationDbContext applicationDbContext)
{
_applicationDbContext = applicationDbContext;
}
Создать класс роли:
public class Role {
public string ID { get; set; }
public string Name { get; set; }
}
И запросить роли как:
if (User.Identity.IsAuthenticated)
{
var userid = User.Claims.Where(x => x.Type == ClaimTypes.NameIdentifier).FirstOrDefault().Value;
var query = from b in _applicationDbContext.UserRoles
where b.UserId == userid
join p in _applicationDbContext.Roles
on b.RoleId equals p.Id into grouping
from p in grouping.DefaultIfEmpty()
select new Role { ID=p.Id, Name=p.Name };
var roles = query.ToList();
}