Action filter
今天主要討論的部分是下圖紅色框框的範圍
這一塊包含了Moddle Binding 和Action以及Action filter
本篇主要聚焦在Action fitler
Action filter是在Model binding 之後所進入的一個filter
也就是下圖紅色框框部分
因為是已經過了Modle Biding
主要是在進入Action的前後再去做一層判斷處理
使用了IActionFilter
並實作兩個方法
OnActionExecuting - 進入Action之前
OnActionExecuted - 結束Action後
舉個例子
假設今天一個website
因為網站要升級分成新舊兩版,可能新版的網頁還沒有支援手機
想要讓手機看到的還是舊版,但網頁版是新版
可以利用Action去處理這樣的分流
建立action filter
新增一支叫做MobileActionFilter.cs
裡面繼承IActionFilter這個介面
並在OnActionExecuting裡面去判段request來源的裝置
例外這支filter也會傳入兩個參數,告訴filter要導向到哪個action
新增filter到controller
我們在Home/Index首頁
假設今天這一個action是給新的網頁
但我們要讓mobile進來的導到舊的action
在上面新增一個剛剛建立好的filter,並傳入要目標的action還有controller
這邊filter的宣告方式和上一篇有點不相同
原因是因為在MobileActionFilter程式裡面有些繼承了Attribute
所以可以直接使用Attribute的宣告方式
[MobileActionFilter(Action = "OldWeb", Controller = "Home")]
使用postman模擬手機瀏覽
因為要再header傳入x-mobile去模擬手機的的行為
在這直接使用postman操作
可以看到request首頁的網址
但回傳的會結果會是舊的web
網頁瀏覽驗證
同樣在瀏覽器瀏覽相同的網址
回傳的會是新的web
這邊註明一下會看到分別有5000 port和5001 port
是因為5000是http, 5001是https
在使用vs2019建立專案的時候
因為一開始有勾選使用ssl
所以提供了兩個不同的port 分給http和https
也可以直接在launchSettings.json手動去做更改
今天先解說一下Action filter
未來會再補上
Resource Filter和Middleware filter的整理