2017-03-14 5 views
10

을 추가Owin 주장 나는 사용자가 다음과 같은 역할을 할당 할 수있는 응용 프로그램이 여러 ClaimTypes.Role

  • 최고 관리자를
  • 관리
  • 사용자

한 사용자가있을 수 있습니다 두 개 이상의 역할이 지정되었습니다. SuperAdmin과 User 모두. 내 응용 프로그램은 클레임을 사용하므로 클레임을 통해 사용자 역할을 인증하려고합니다. 같은 :

[Authorize(Roles="Admin")] 

불행하게도, 난 내 ClaimTypes.Role에 여러 역할을 추가하는 방법을 잘 모릅니다. 당신이 볼 수 있듯이, 내가 설명을 위해 많은 역할을 추가하려고했으나 분명 그 작동하지 않습니다 때문에 잘못된 방법으로 수행하고,

var identity = new ClaimsIdentity(new[] { 
       new Claim(ClaimTypes.Name, name), 
       new Claim(ClaimTypes.Email, email), 
       new Claim(ClaimTypes.Role, "User", "Admin", "SuperAdmin") 
     }, 
      "ApplicationCookie"); 

: 나는 다음과 같은 코드가 있습니다. 따라서 도움을 주시면 감사하겠습니다.

답변

16

클레임 ID는 동일한 클레임 유형으로 여러 클레임을 가질 수 있습니다. 이렇게하면 특정 사용자 역할이 있는지 확인하기 위해 HasClaim 메서드를 사용할 수 있습니다.

var identity = new ClaimsIdentity(new[] { 
      new Claim(ClaimTypes.Name, name), 
      new Claim(ClaimTypes.Email, email), 
      new Claim(ClaimTypes.Role, "User"), 
      new Claim(ClaimTypes.Role, "Admin"), 
      new Claim(ClaimTypes.Role,"SuperAdmin") 
    }, 
     "ApplicationCookie"); 
+0

꽤 멋지다. 그런 다음 내 db 쿼리에서 루프를 만들 수 있다고 생각해! 고맙습니다! –