0

나는 WebAPI에서 일하고 있습니다. 각 클라이언트에 데이터를 보내려면 다음 두 가지 방법이 필요합니다.관리자 역할 및 익명 역할에 대한 인증 방법을 공유하는 방법

메소드의 서명

[HttpPost] 
[Authorize] 
public string GetMessage() 
{ 
    return "I'm a Member of StackOverflow"; 
} 

[HttpPost] 
[Authorize(Roles = "Admin")] 
public string GetAdminMessage() 
{ 
    return "I'm a Member of StackOverflow since 2010"; 
} 

가 친절하게 어떻게 클럽의 역할에 따라 하나의 방법이 두 가지 방법, 그것은 데이터를 반환해야 나에게 도움이됩니다.

예상 골격 구조

[HttpPost] 
[Authorize ???] 
public string GetMessage() 
{ 
    return "I'm a Member of StackOverflow" + (Roles == Admin) ? "since 2010" : String.Empty; 
} 
+1

if (this.User.IsInRole ("Admin")) {...} else {...}'를 사용하지 않는 이유는 무엇입니까? – haim770

+0

@ haim770 - Authorize 속성의 구조는 무엇입니까? [Authorize ???]' –

+1

매개 변수없이'[Authorize]'를 적용하십시오. 권한이 부여 된 사용자 만 역할에 관계없이 작업에 액세스 할 수 있는지 확인합니다. 그렇다면 당신은 반드시'if ...'를 사용하여 자신의 역할을 확인하십시오. – haim770

답변

0

당신이 쉼표 [Authorize(Roles="role1,role2")]와 별도의와 같은 역할을 PAS 할 수 있어야한다. 하지만이 경우에는 역할을 보내지 않아도됩니다. 익명의 역할이 없기 때문입니다.

[HttpPost] 
public string GetMessage() 
{ 
    return "I'm a Member of StackOverflow" + User != null && User.IsInRole("Admin") ? "since 2010" : String.Empty; 
} 
0

당신은 또한없는 속성 레벨의 방법 내에서 역할 기반의 유효성 검사를 사용, 특정 역할 및 익명 역할 모두 [Authorize]를 사용할 수 있습니다.

[HttpPost] 
[Authorize] 
public string GetMessage() 
{ 
    return "I'm a Member of StackOverflow" + 
     ((this.User != null) && (this.User.IsInRole("Admin"))) 
      ? "since 2010" : String.Empty; 
}