例如我有以下控制器 example.com/controller/
方法被稱爲
有三種方法:
example.com/controller/method1
example.com/controller/method2
example.com/controller/validate
我想驗證運行,無論什麼方法被調用,我想確保驗證運行,因爲它包含代碼來驗證客戶端是否有有效的cookie集或從頁面啓動他們。
例如我有以下控制器 example.com/controller/
方法被稱爲
有三種方法:
example.com/controller/method1
example.com/controller/method2
example.com/controller/validate
我想驗證運行,無論什麼方法被調用,我想確保驗證運行,因爲它包含代碼來驗證客戶端是否有有效的cookie集或從頁面啓動他們。
我認爲你需要ActionFilter這將做驗證。創建您的自定義驗證過濾器屬性,覆蓋其OnActionExecuting方法(執行cookie驗證),並將屬性應用於控制器(或特定操作)。
我建議在看行動過濾器:
的行爲過濾器是可以應用到一個控制器動作的屬性 - 即改變在其中執行操作的方式 - 或整個控制器。 ASP.NET MVC框架包含若干動作過濾器:
- OutputCache - 此操作篩選器將控制器操作的輸出緩存指定的時間量。
- HandleError - 此操作篩選器處理執行控制器操作時引發的錯誤。
- 授權 - 此操作篩選器使您能夠限制對特定用戶或角色的訪問。
您還可以創建自己的自定義操作過濾器。例如,您可能想要創建自定義操作篩選器以實現自定義身份驗證系統。或者,您可能需要創建一個操作篩選器,以修改控制器操作返回的視圖數據。
取決於時機你想要做這個檢查,你可以把當這一點在你的控制器的構造函數,或覆蓋從基本控制器(通常AsyncController)OnActionExecuting。
如果你想在每個控制器上運行這個檢查,那麼我建議你創建一個ControllerBase類,然後你的其他控制器可以繼承它。
您應該將您的驗證代碼從操作移至自定義授權過濾器。與動作過濾器不同,授權過濾器是首先運行的過濾器,因此您應該將它們用於此類安全檢查。
已經有一個內置的授權過濾器Authorize
做體面的工作,如果你想創建一個自定義的工作,我會建議擴展Authorize
屬性並覆蓋所需的方法。 Authorize
屬性可以避免緩存問題,這也是我推薦它的原因。
拍攝,我要遲到.. –