springboot中对拦截器进行重置的方法
springboot中对拦截器进行重置的方法
- 背景:springboot项目中,依赖一个权限管理的jar包,jar包中通过拦截器对请求进行了拦截验证,而权限验证jar不能进行排除依赖时,如果需要自定义权限验证或校验,应该怎么做呢?
思路和实现:
1.在spring boot启动的过程中,将已注册的拦截器从spring容器中移除,然后新建自定义拦截器,然后注入spring容器。
新建一个类NotSecurity并实现ApplicationContextAware的setApplicationContext方法,在方法中进行bean操作。
2.根据spring boot容器加载顺序,我们可以自定义配置类,在配置类中清除原有的拦截器,然后自定义自己的拦截器。
新建一个NotSecurity类并实现WebMvcConfigurer接口的addInterceptors方法。
注意红框中清除原来拦截器的处理,如果不处理,则新的同名拦截器不会覆盖原有拦截器,而是继续添加进拦截器数组中。
还有需要注意的一点是:@AutoConfigureAfter(SecurityConfiguration.class),必须注明本类拦截器配置必须在原拦截器配置之后加载,这一点非常重要。
如果我们添加AutoConfigureAfter注解后配置类的加载顺序不正确,需要在resources文件夹下的MATE-INFO文件夹下的spring.factories文件中添加两个配置类的路径,如下:
至此,我们就完成了自定义拦截器替代jar包中的拦截器。
声明:转载请说明出处。