10

authorize 属性のライフサイクルが、それが適用されるクラスまたはメソッドに関連して管理されているように見える理由を誰かが説明できますか? これは、リクエストのライフサイクルに関連して管理されるのとは対照的です。

クラス レベルでコントローラーをデコレートすると、承認属性コンストラクターは、同じコントローラーへの複数の要求に対して 1 回だけ呼び出されます。各コントローラー メソッドをデコレートすると、呼び出された各コントローラー メソッドに対して新しい authorize 属性コンストラクター呼び出しが取得されます。

この振る舞いは一体何ですか?リクエストごとに承認属性の作成が行われることを期待しています。

4

1 に答える 1

11

ASP.NET MVC は ActionFilter をキャッシュし、後続の要求でそれらを再利用しようとします。実際の承認はリクエストごとに行われますが、コンストラクターは最初のリクエストでのみ呼び出されます。ActionFilter で内部状態を保持しないでください。

于 2013-12-04T21:09:56.660 に答える