2011-12-16 10 views
0

コントローラに複数のカスタムAuthorizeAttributeをスタックすることはできますか?MVC3コントローラのスタッキング許可

私はこのような何かやってみました:

[IsOwner] 
[IsFranchisee] 
public class CartController : Controller 
{ 
    ... 
} 

をが、それは動作が不安定であるのです。時にはうまくいくこともありますが、時にはそうではありません(主に後者です)。

答えて

1

実装は正しいですか? プロパティを設定しない限り、FilterAttributes(保証対象外)の注文はありません(AuthorizeAttributeから派生)。

あなたは動作が不安定であると言いましたので、1つの属性がもう一方の属性をキャンセルする可能性があります。たとえば、ユーザIsOwner == trueではなく、IsFranchisee == falseです。おそらく許可が与えられているかどうかは、どちらが最初に実行されるかによって決まります。

したがって、属性に注文プロパティを与え、その動作が依然として不規則であるかどうかを確認することができます。

+0

これは考えられませんでした。しかし、私は私の実装を最後に変更しました。 – Ron

3

はいできます。 AuthorizeAttributeのソースで好きな人はAllowMultiple = trueです。

1

通常、動的承認の場合、コントローラまたはアクションには[Authorize]注釈が1つ与えられ、コントローラまたはアクション内で承認が処理されます。

関連する問題