6

IActionFilterと の間に違いがあるかどうか疑問に思ってい IAuthorizationFilterますか?

IActionFilter 私はおそらくそれの下で同じロジックを実装できると思いIAuthorizationFilterます...それは本当ですか?

ありがとう!

4

3 に答える 3

9

質問によると、はい、同じロジックを と の両方に実装できIActionFilterますIAuthorizationFilter。ただし、実行順序のみが異なります。

ASP.NET MVC フレームワークは、次の 4 種類のフィルターをサポートしています。

    Authorization – Implements  IAuthorizationFilter Attribute.
    Action        – Implements IActionFilter Attribute.
    Result        – Implements  IResultFilter Attribute.
    Exception     – Implements  IExceptionFilter Attribute.

注: フィルターは上記の順序で実行されます。

承認フィルターは常にアクション フィルターの前に実行され、例外フィルターは常に他のすべての種類の の後に実行されfilterます。

Authorizationフィルターは、コントローラー アクションの実装authenticationと実行に使用されます。authorizationたとえば、Authorize フィルターは Authorization フィルターの一例です。

アクション フィルターには、コントローラー アクションの実行前後に実行されるロジックが含まれます。たとえば、アクション フィルターを使用して、コントローラー アクションが返すビュー データを変更できます。

Resultフィルターには、ビューの結果が実行される前後に実行されるロジックが含まれます。たとえば、ビューがブラウザーにレンダリングされる直前に、ビューの結果を変更したい場合があります。

Exceptionフィルターは、最後に実行するフィルターのタイプです。例外フィルターを使用して、コントローラー アクションまたはコントローラー アクションの結果によって発生したエラーを処理できます。例外フィルターを使用してエラーをログに記録することもできます。

異なるタイプのフィルターはそれぞれ特定の順序で実行されます。同じタイプのフィルターが実行される順序を制御したい場合は、フィルターの Order プロパティを設定できます。

注: すべてのアクション フィルターの基本クラスはSystem.Web.Mvc.FilterAttributeclass です。

于 2013-10-08T14:42:54.330 に答える
3

承認フィルターは、アクション パイプラインの非常に早い段階で実行されます。たとえば、条件が満たされないときにアクション パイプラインから抜け出すのに適しています。(これを使用する MVC フレームワーク属性の例は [Authorize]、[RequireHttps] です)

アクション フィルターは承認フィルターの後に実行され、アクションの前後処理に参加できます。

于 2013-10-08T14:23:27.343 に答える