2012-02-02 1 views
0

私は、ユーザーが複数のロールを持ち、異なるロールを持つ複数の国を持つことができる、認証/認証にメンバーシップを使用するWebアプリケーション(MVC)を持っています。現在のロールに対するメンバーシップチェック

たとえば、user1は米国の管理者と編集者、メキシコの編集者のみです。ユーザがシステムにログインすると、両方を選択するように求められます(国と役割)。

AdminControllerには、[Authorize(Rol = "Admin")]属性があります。

この場合、ユーザーが米国のエディタとしてログインしている場合は、AdminContollerのアクションを実行する必要があります。

ユーザーが現在ログオンしている役割を確認する「より良い」アプローチはどれですか?

+0

おそらく、あなたはAuthorize属性を無効にできます。 [Authorize(Rol = "Admin/Mexico")]は管理者とメキシコになります。 –

答えて

0

カスタム承認属性を作成することができます

public class CustomAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     // Code here checks that user is Admin for currently selected Country 
    } 
} 

をし、その後ように、あなたの属性を使用します。

[CustomAuthorizeAttribute (Roles="Admin")] 

This articleは、より詳細に対象をカバーしています。