我自定义的拦截器为什么会靠后执行?

我自定义的拦截器为什么会靠后执行?,第1张

我自定义的拦截器为什么会靠后执行? Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475
目录* 背景

模拟场景是不是因为order的值找出在哪里赋予的order值解决办法 背景

项目中自定义了拦截器Filter,项目中使用了spring security,它也有对应的拦截器,我想让我自定义的Filter在spring security的拦截器前执行。

因为我自定义的拦截器,需要提前做一些逻辑处理;然后spring security的拦截器需要用到这部分的处理结果;所以我必须要想办法让我自定义的拦截器靠前执行。

那就一起来看看spring security设置的拦截器的默认优先级等级是多少吧。

模拟场景

自定义拦截器如下:

@Slf4j
public class MyoncePerRequestFilter extends oncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
 throws ServletException, IOException {
        log.info("======== MyoncePerRequestFilter ========");
        filterChain.doFilter(request, response);
    }
}

@Configuration
public class Config {
    @Bean
    public FilterRegistrationBean i18nFilterRegistrationBean() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
 MyoncePerRequestFilter myoncePerRequestFilter = new MyoncePerRequestFilter();
 registrationBean.setFilter(myOncePerRequestFilter);
 registrationBean.addUrlPatterns("
		private int order = DEFAULT_FILTER_ORDER;
		public int getOrder() {
			return this.order;
		}
		public void setOrder(int order) {
			this.order = order;
		}
	}
}
public interface OrderedFilter extends Filter, Ordered {
	
	int REQUEST_WRAPPER_FILTER_MAX_ORDER = 0;
}

到此我们也找到了这个默认值,是根据spring.security.filter.order来决定的,默认值是-100

解决办法

第一种就是修改自己的顺序

@Configuration
public class Config {
    @Bean
    public FilterRegistrationBean i18nFilterRegistrationBean() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
 MyoncePerRequestFilter myoncePerRequestFilter = new MyoncePerRequestFilter();

 registrationBean.setFilter(myOncePerRequestFilter);
 registrationBean.addUrlPatterns("/*");
 registrationBean.setOrder(-101); // 这里
 return registrationBean;
 }
}

第二种就是修改spring security拦截器的顺序:

spring:
  security:
    filter:
      order: 0

大家可以自己跑跑试试看,完结撒花~~~~~~

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5712536.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存