權限認證有三塊(1)過濾器 (2)攔截器 (3)單獨寫代碼邏輯處理,函數調用等。
只有過濾器運行邏輯:, 過濾器中的內容->doFilter->doFilter後面的邏輯 過濾器中的內容 ############TestFilter1 doFilterInternal executed############ ############TestFilter2 doFilterInternal executed############ doFilter ############TestFilter2 doFilter after############ ############TestFilter1 doFilter after############ 過濾器中的內容 ############TestFilter1 doFilterInternal executed############ ############TestFilter2 doFilterInternal executed############ doFilter ############TestFilter2 doFilter after############ ############TestFilter1 doFilter after############ ------------------------------------------------------------------------------------------------------------------------------- 有過濾器,又有攔截器,執行邏輯如下: 過濾器中的內容->攔截器preHandle-執行控制器的內容邏輯->攔截器postHandle->攔截器afterCompletion->過濾器doFilter->doFilter->doFilter後面的邏輯-> 過濾器: ############TestFilter1 doFilterInternal executed############ ############TestFilter2 doFilterInternal executed############ 攔截器preHandle: ************TestInterceptor preHandle executed********** 過了攔截器preHandle後,執行controller層邏輯: ---------TestController executed-------- 攔截器postHandle: ************TestInterceptor postHandle executed********** 攔截器afterCompletion: ************TestInterceptor afterCompletion executed********** 過濾器doFilter 驗證後的邏輯: ############TestFilter2 doFilter after############ ############TestFilter1 doFilter after############ 過濾器: ############TestFilter1 doFilterInternal executed############ ############TestFilter2 doFilterInternal executed############ 過了攔截器preHandle後,執行controller層邏輯: ************TestInterceptor preHandle executed********** 過了攔截器preHandle後,執行controller層邏輯: ---------TestController executed-------- 攔截器postHandle: ************TestInterceptor postHandle executed********** 攔截器afterCompletion: ************TestInterceptor afterCompletion executed********** 過濾器doFilter 驗證後的邏輯: ############TestFilter2 doFilter after############ ############TestFilter1 doFilter after############
結論:
過濾器在攔截器之前,過濾器是全局的。過濾器的規則完全依賴於url-pattern,如果路由規則不符合url-pattern,不走相關過濾器。如果想讓過濾器失效,需要想辦法繞過url-pattern規則,比如說url-pattern的配置不當可以被繞過。