spring security下过滤器执行了两次

当在Spring Security中使用@bean声明过滤器时,会导致过滤器被Spring MVC和Spring Security各执行一次。为解决此问题,可以移除@bean注解,但这可能使@Autowired和@Value注解失效。可以通过将依赖注入移到继承自WebSecurityConfigurerAdapter的配置类上来保持其有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是因为你的过滤器声明时使用了@bean,所以这个过滤器也注册到了spring mvc中,才导致执行了两次,spring mvc执行了一次,spring security执行了一次。

解决办法:简单的就是把@bean给删除掉,但有可能会引发一些问题,不知道你有没有

比如,在过滤器定义了@Autowired,@Value("${token.header}")这些注解,在有@bean的情况下,这些注解spring都会解析,但没了@bean这些注解也没用了,可以把这些变量写在spring security配置类上,就是继承了WebSecurityConfigurerAdapter的类,因为这个配置类肯定会使用@Configuration,所以@Autowired,@Value("${token.header}")这些注解就会生效,看例子吧

过滤器: 

/**
 * json web token 在请求头的名字
 */
private String tokenHeader;

/**
 * 辅助操作 token 的工具类
 */
private TokenUtils tokenUtils;

/**
 * Spring Security 的核心操作服务类
 * 在当前类中将使用 UserDetailsService 来获取 userDetails 对象
 */
private UserDetailsServiceImpl userDetailsService;

publ
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值