在MVC的請求管道 並非 asp.net core的請求管道。因此說Filter是專用於MVC的
貫穿特性,橫穿關注點。好比受權、日誌
這裏的Authorize其實就是一個Filter,主要用來受權的
好比這個Filter,咱們要求必須使用Https才能夠訪問
受權在整個管道的最前面
action過濾器是在Action被調用以前和以後,這個時候ModelBing已經發生了。綁定完以後就能夠操縱這些參數了。
Rsult:在Action的IActionResult以前和以後,經過它能夠控制結果的執行,也能夠短路結果的執行
對應的五種類型有物種的子接口
新建一個Filter的文件夾
LogAsyncResourceFilter 這個過濾器主要用來作日誌
F12 看一下IResourceFilter這個接口的源碼,接口就是實現的IFilterMetadata這個接口。
因此咱們只須要實現IResourceFilter 就能夠了。實現接口的兩個方法
OnResourceExecuting是在受權過濾器以後,參數上下文包含了httpContext還有路由的一些細節。以及當前這個Action的信息。
由於這個Filter能夠做用於Action
asp.net
OnResourceExecuted:MVC管道剩餘部門執行完後,纔會執行。參數Context和上面不同,好比說還返回了ActionResult的信息
它有個參數是Delegate委託next裏面包裝着整個MVC剩餘的管道
執行next方法 就是執行下一步的操做。這樣就和同步的版本對應上了
全部的管道過濾器調用完成以後調用最後這句
儘可能仍是使用同步的版本異步
還須要繼承Attribute
異步的也須要繼承
運行頁面查看控制檯:
應用Controller級別
打開默認頁面後,再訪問如下Privacy這個頁面
先註釋掉
使用全局
兩種方式
第三種:
視頻做者習慣於最後一種
.net