0

私は[Authorize]過去に属性を多く使用してきましたが、次のようなこともできます。

[Authorize(Users = "test")]

とはいえ、もう一つ付け加えておきたいのは、

[Authorize(IsPermitted= PermissionsEnum.ThePermission)]

ユーザーがそのアクセス許可を許可されているかどうかを判断するロジックを書き出しましたが、そのオーバーロードを authorize 属性に追加する方法がわかりません。

可能であれば、完全に別個の authorize 属性を作成したくありません。

4

2 に答える 2

2

まあ、@Dave Aがコメントで言ったように、ネイティブAuthorize属性を拡張して独自の認証方法を実装することができます。

public class MyAuthorizeAttribute : AuthorizeAttribute
{
    // create your custom property
    public PermissionsEnum IsPermitted { get; set; }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        bool authorized = // create your own validation and return a bool value                
        if (authorized)
        {
            return false;       
        }

            // if you want to have the nativa validation, call it from the base method
        return base.AuthorizeCore(httpContext);
    }
}

サンプルとして、コントローラー/アクションをカスタム承認属性で装飾することを忘れないでください。

[MyAuthorize(IsPermitted = PermissionsEnum.Sales)]
public class OrderController : Controller 
{
   // actions...    
}
于 2013-03-26T03:06:49.973 に答える
0

残念ながらできません。設定できるプロパティは、ユーザーとロールのみです。したがって、別の Attribute クラスを作成する必要があります。

于 2013-03-26T01:27:48.990 に答える