最近自定义了两个过滤器,接口请求返回加密
和sql注入处理
过滤器,因为在封装一些工具包,我在单独调好之后,就打算做成一个注解,像springboot
启动类上加@EnableScheduling
一样,可以随意控制,当我不想让这俩过滤器生效的时候,那就不加这个注解就可以了。
当然我想到了FilterRegistrationBean
的使用方法,注入这两个过滤器。
但是当我写完之后,打成包之后,发现只有sql注入过滤器
生效。
原因就是我通过@Bean
注解注入FilterRegistrationBean
时,没有对它们起别名,造成冲突,只能注入一个。
我的工程里,写了两个下边的方法:
/** * @return 注入加密过滤器 */
@Bean
public FilterRegistrationBean filterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new EncryptionFilter());
registration.addUrlPatterns("/*");
registration.setName("encryptionFilter");
registration.setOrder(1);
return registration;
}
/** * @return 注入加密过滤器 */
@Bean
public FilterRegistrationBean filterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new SqlInjectManagerFilter());
registration.addUrlPatterns("/*");
registration.setName("sqlInjectManagerFilter");
registration.setOrder(2);
return registration;
}
这个问题虽然简单,但是确实影响到我思路了,我最初一直在考虑是不是我做的springboot
启动类加注解触发过滤器注入的方式不对,也是因为我看了下@EnableTransactionManagement
的注入方式,我差点就怀疑@Import
在打成工具包后不能多个使用的问题。尴尬~~~
当我一比较这俩方法的时候,我才怀疑到名字冲突了。因此就分别对它们加了名称如下:
/** * @return 注入加密过滤器 */
@Bean(name = "encryptionFilter")
public FilterRegistrationBean filterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new EncryptionFilter());
registration.addUrlPatterns("/*");
registration.setName("encryptionFilter");
registration.setOrder(1);
return registration;
}
/** * @return 注入加密过滤器 */
@Bean(name = "sqlInjectManagerFilter")
public FilterRegistrationBean filterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new SqlInjectManagerFilter());
registration.addUrlPatterns("/*");
registration.setName("sqlInjectManagerFilter");
registration.setOrder(2);
return registration;
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_43842093/article/details/121591114
内容来源于网络,如有侵权,请联系作者删除!