如何一次性給所有action做登入驗證過濾,如何排除不需要做登入驗證的action?
1.如何讓某個action未登入就不能執行?
先封裝乙個判斷是否登入的函式。
目標action中呼叫這個函式,如果未登入,跳轉登入action
2.如果controller中有很多action都要處理怎麼辦?
可以自定義乙個過濾器
給每個需要做登入檢查的action打上這個標籤
3.這樣還是麻煩,每個action都要打標籤嗎?
也可以給controller這個層級打標籤,對內部所有action都有效
4.如果專案中有很多controller,每個都要打一遍嗎?
有兩個方法:
4.1.宣告乙個basecontroller:controller,在這個基類上打標籤
讓需要做登入驗證的controller都繼承自basecontroller
4.2使用全域性過濾器
應用啟動的時候註冊全域性過濾器,會對所有controller的action起作用
5.可是我的首頁和登入action是不需要做過濾的,怎麼排除?
修改過濾器,增加乙個是否需要檢查的屬性
只給不需要做檢查的action或者controller打上不需要做檢查的標籤即可
全域性過濾器註冊的時候,要註冊為需要檢查
6.回頭審視一下我們的基類basecontroller
繼承自controller類,它本身已經繼承了iactionfilter介面,我們只要override這個介面的方法,就可以了。所有繼承自這個基類的controller就都可以做登入驗證了,基類也不需要打標籤了,相當於把過濾器的業務邏輯,轉移到這個方法中:
在子類中控制是否需要做登入檢查
這個方法的問題是:沒有辦法對子類的action單獨控制是否做檢查。
非要做也可以,那就要再定義乙個標籤atrribute,來標識不需要檢查,在basecontroller父類中通過反射檢查action是否打了這個不需要檢查的標籤。
但是這樣有點繞了,不如用全域性過濾器方便!
MVC過濾器全域性異常捕捉
1 首先引用log4net.dll 2 logexceptionattribute.cs檔案 attributeusage attributetargets.class,inherited true allowmultiple false public class logexceptionattri...
MVC過濾器 過濾器執行順序
如果某個action過濾器運用了多種過濾器,那麼過濾器的執行順序是如何呢?即執行順序是 授權過濾器 動作過濾器 結果過濾器 異常過濾器。注意 如果actionfilter過濾器執行過程中發生了異常,那麼會執行exceptionfilter過濾器,不會執行resultfilter過濾器。上圖所示的是正...
Vue 過濾器案例(全域性過濾器和區域性過濾器)
doctype html en utf 8 viewport content width device width,initial scale 1.0 js vue 2.4.0 js script 過濾器 title head 兩個過濾器的名稱都為msgformat,但是控制不同作用,乙個是全域性的...