0

私はWebAPIで作業しています。私はそれぞれのクライアントにデータを送信する次の2つの方法を持っています。管理者ロールと匿名ロールのAuthorizeメソッドを共有する方法

メソッドのシグネチャは

[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"; 
} 

が親切にどのようにクラブの役割に基づいて、単一の方法でこれらの2つの方法が、それはデータを返す必要があり、私を支援しています。

予想される骨格構造を使用すると、カンマ[Authorize(Roles="role1,role2")]と別個のものとしての役割をPASでき

[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

でなければなりません。この場合、役割を送信する必要はありません。匿名の役割はないので。

[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; 
} 
関連する問題