반응형
asp.net ID는 로그인 한 사용자의 모든 역할을 가져옵니다.
이 튜토리얼을 따라 역할 기반 메뉴를 만들었습니다 . 해당 페이지 아래에 다음 코드 줄이 표시됩니다.
String[] roles = Roles.GetRolesForUser();
현재 로그인 한 사용자의 모든 역할을 반환합니다. 새로운 ASP.NET Identity 시스템을 사용하여이 작업을 수행하는 방법이 궁금합니다.
아직 꽤 새롭고 찾을 것이 많지 않습니다.
Controller.User.Identity
입니다 ClaimsIdentity
. 클레임을 검사하여 역할 목록을 얻을 수 있습니다.
var roles = ((ClaimsIdentity)User.Identity).Claims
.Where(c => c.Type == ClaimTypes.Role)
.Select(c => c.Value);
--- 업데이트 ---
좀 더 세분화 ...
using System.Security.Claims;
// ........
var userIdentity = (ClaimsIdentity)User.Identity;
var claims = userIdentity.Claims;
var roleClaimType = userIdentity.RoleClaimType;
var roles = claims.Where(c => c.Type == ClaimTypes.Role).ToList();
// or...
var roles = claims.Where(c => c.Type == roleClaimType).ToList();
위 솔루션의 확장 방법은 다음과 같습니다.
public static List<string> Roles(this ClaimsIdentity identity)
{
return identity.Claims
.Where(c => c.Type == ClaimTypes.Role)
.Select(c => c.Value)
.ToList();
}
@using System.IdentityModel.Claims 네임 스페이스를 사용하지 마십시오.
@using System.Security.Claims
@using System.Security.Claims
@using Microsoft.AspNet.Identity
@{
var claimsIdentity = User.Identity as System.Security.Claims.ClaimsIdentity;
var customUserClaim = claimsIdentity != null ? claimsIdentity.Claims.FirstOrDefault(x => x.Type == "cutomType") : null;
var customTypeValue= customUserClaim != null ? customUserClaim .Value : User.Identity.GetUserName();
var roleOfUser = claimsIdentity != null ? claimsIdentity.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Role).Value :"User";
}
After getting Identity User from SignIn Manager, callGetRolesAsync on UserManager and pass identity user as parameter. It will return of List of roles, identity user enrolled in
var rolesList = await userManager.GetRolesAsync(identityuser).ConfigureAwait(false);
ReferenceURL : https://stackoverflow.com/questions/21688928/asp-net-identity-get-all-roles-of-logged-in-user
반응형
'development' 카테고리의 다른 글
코어 덤프 파일이 생성되지 않습니다. (0) | 2021.01.10 |
---|---|
PyCharm Python 콘솔의 줄 바꿈? (0) | 2021.01.10 |
iOS : 모든 핵심 데이터 Swift 삭제 (0) | 2021.01.10 |
?? (0) | 2021.01.10 |
레이블이있는 경우에도 "시스템에서 지정된 배치 레이블을 찾을 수 없습니다"가 발생하는 이유는 무엇입니까? (0) | 2021.01.10 |