1. 程式人生 > >mvc的過濾器學習-資料查詢

mvc的過濾器學習-資料查詢

濾波 所有 管道 創建 -s 捕獲異常 註冊 cep 取消

標題:Filtering in ASP.NET MVC

地址:https://docs.microsoft.com/en-us/previous-versions/aspnet/gg416513(v=vs.98)

ASP.NET MVC支持以下類型的操作過濾器:

  • 授權過濾器。這些實現IAuthorizationFilter並做出關於是否執行操作方法的安全決策,例如執行身份驗證或驗證請求的屬性。AuthorizeAttribute類和RequireHttpsAttribute類是一個授權濾波器的例子。授權過濾器在任何其他過濾器之前運行。

  • 動作過濾器。這些實現IActionFilter並包裝動作方法執行。

    IActionFilter接口聲明了兩個方法:OnActionExecutingOnActionExecutedOnActionExecuting在action方法之前運行。OnActionExecuted在action方法之後運行,並且可以執行其他處理,例如向action方法提供額外數據,檢查返回值或取消action方法的執行。

  • 結果過濾器。這些實現IResultFilter並包裝ActionResult對象的執行IResultFilter聲明了兩種方法:OnResultExecutingOnResultExecutedOnResultExecuting在執行ActionResult

    對象之前運行OnResultExecuted在結果之後運行,並且可以執行結果的其他處理,例如修改HTTP響應。所述OutputCacheAttribute類是一個結果濾波器的一個例子。

  • 異常過濾器。這些實現IExceptionFilter並在執行ASP.NET MVC管道期間拋出未處理的異常時執行。異常過濾器可用於記錄或顯示錯誤頁面等任務。所述HandleErrorAttribute類是一個例外濾波器的一個例子。

控制器類實現每個過濾接口。您可以通過覆蓋控制器的On <Filter>方法來實現特定控制器的任何過濾器。例如,您可以覆蓋OnAuthorization方法。可下載示例中包含的簡單控制器會覆蓋每個過濾器,並在每個過濾器運行時寫出診斷信息。

您可以在控制器中實現以下On <Filter>方法:

  • OnAuthorization

  • onException的

  • OnActionExecuting

  • OnActionExecuted

  • OnResultExecuting

  • OnResultExecuted

ASP.NET MVC中提供的過濾器

ASP.NET MVC包括以下過濾器,這些過濾器作為屬性實現。可以在操作方法,控制器或應用程序級別應用過濾器。

  • AuthorizeAttribute通過身份驗證和可選的授權來限制訪問。

  • HandleErrorAttribute指定如何處理操作方法引發的異常。

    註意

    除非在Web.config文件中啟用了customErrors元素,否則此過濾器不會捕獲異常。

  • OutputCacheAttribute提供輸出緩存。

  • RequireHttpsAttribute強制通過HTTPS重新發送不安全的HTTP請求。

如何創建過濾器

您可以通過以下方式創建過濾器:

  • 覆蓋一個或多個控制器的On <Filter>方法。

  • 創建一個派生自ActionFilterAttribute的屬性類,並將該屬性應用於控制器或操作方法。

  • 使用過濾器提供程序(FilterProviders類)註冊過濾器

  • 使用GlobalFilterCollection註冊全局過濾器

過濾器可以實現抽象的ActionFilterAttribute類。某些過濾器(如AuthorizeAttribute)直接實現FilterAttribute類。始終在操作方法運行之前調用授權過濾器,並在所有其他過濾器類型之前調用。其他操作過濾器(如OutputCacheAttribute)實現抽象ActionFilterAttribute類,該類允許操作過濾器在操作方法運行之前或之後運行。

您可以使用操作方法或控制器以聲明方式使用filter屬性。如果屬性標記控制器,則操作篩選器將應用於該控制器中的所有操作方法。

以下示例顯示了HomeController類的默認實現。在示例中,HandleError屬性用於標記控制器。因此,過濾器適用於控制器中的所有操作方法。

mvc的過濾器學習-資料查詢