就上圖來看,大家注意了嗎,ActionExecutingContext對象一共有3處引用。下面我來一一解析:
調用base.OnActionExecuting(filterContext)這個后,才會執行后續的ActionFilter,如果你確定只有一個,或是不想執行后續的話,那么可以不用調用該語句
filterContext.ActionDescriptor.ActionName通過上下文獲得了執行的Action名稱
filterContext.Result是執行上下文Action后返回的自定義結果。
然后我們再來看看這個ActionExecutingContext類,請看下圖
這里更明確的說明了ActionExecutingContext類能幫你做什么。當然我要說說,這個類一般是用於自定義過濾器進行過濾,對於控制器來說它本身繼承了ActionFilterAttribute基類,因此可以重寫OnActionExecuting以下說明了該類相關方法
方法 |
參數 |
描述 |
OnActionExecuting |
ActionExecutingContext |
在行為方法執行前執行 |
OnActionExecuted |
ActionExecutedContext |
在行為方法執行后執行 |
OnResultExecuting |
ResultExecutingContext |
在行為方法返回前執行 |
OnResultExecuted |
ResultExecutedContext |
在行為方法返回后執行 |
四個方法執行順序是OnActionExecuting——>OnActionExecuted——>OnResultExecuting——>OnResultExecuted
現在,我們再回到上圖,看看這個
這段什么意思呢,CurrentModule是特性標識,特性名AuthenticateAttribute;想必大家明白權限過濾咋回事了吧
我們再看看這個,是不是限制了登錄了呀,呵呵