IAuthenticationFilter是MVC5中的新特性,它有2個關鍵方法: OnAuthentication OnAuthenticationChallenge 當IAuthenticationFilter和IAuthorizationFilter結合使用時,流程看似比較複雜: 在OnAut ...
IAuthenticationFilter是MVC5中的新特性,它有2個關鍵方法:
- OnAuthentication
- OnAuthenticationChallenge
當IAuthenticationFilter和IAuthorizationFilter結合使用時,流程看似比較複雜:
- 根據路由選擇Controller和Action
- 如果設置了IAuthenticationFilter,則會調用OnAuthentication方法
- 在OnAuthentication中如果設置了context的Result,則會直接跳轉到OnAuthenticationChallenge方法。
- 如果OnAuthentication中沒有設置context的Result,則交由IAuthorizationFilter處理(如果沒有定義IAuthorizationFilter,則進入Action方法)。
- 如果設置了IAuthorizationFilter,則執行授權邏輯調用OnAuthorization方法
- 在OnAuthorization中如果設置了context的Result,則會直接跳轉到IAuthenticationFilter的OnAuthenticationChallenge方法。
- 如果OnAuthorization中沒有設置對應context的Result,則進入Action方法。
- IAuthenticationFilter的OnAuthenticationChallenge方法始終會在ActionResult的ExecuteResult執行之前運行。