Mvc全域性過濾器與Action排除

2021-07-24 07:55:15 字數 1165 閱讀 6988

如何一次性給所有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,但是控制不同作用,乙個是全域性的...