权限认证有三块(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的配置不当可以被绕过。