为了账号安全,请及时绑定邮箱和手机立即绑定

在 Spring Security 过滤器链中添加嵌套的自定义过滤器

在 Spring Security 过滤器链中添加嵌套的自定义过滤器

慕哥6287543 2023-06-14 16:19:51
我创建了两个过滤器来使用 JWT 令牌执行身份验证。我想在第一个中处理 JWT 异常:exceptionTokenVerificationHandlerFilter 并检查第二个中是否一切正常:jwtTokenFilter。如果身份验证因到期日期而失败,则过程返回到第一个过滤器并向前端发送一个响应,其中包含访问被拒绝的消息。Web安全配置    @Override    protected void configure(HttpSecurity http) throws Exception {        http            .httpBasic().disable()            .addFilterBefore(exceptionTokenVerificationHandlerFilter, JwtTokenFilter.class)            .addFilterBefore(jwtTokenFilter, UsernamePasswordAuthenticationFilter.class)            .sessionManagement()            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)                .and()            .cors().and()            .csrf().disable()            .authorizeRequests() // .antMatchers("/**")                .antMatchers("/login/**", "/register/**").permitAll()                .antMatchers("/admin/**").hasRole("ADMIN")                      .anyRequest().authenticated()                .and()            //.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());            .addFilterAt(customUsernamePasswordAuthenticationFilter, UsernamePasswordAuthenticationFilter.class)                /*.formLogin()                .loginPage("http://localhost:4200/login")//.failureUrl("/login-error")                .loginProcessingUrl("/login")                 .usernameParameter("email")                .successHandler(customAuthenticationSuccessHandler)                .and()*/            .logout()                 .permitAll();    }    那么我可以在过滤器链中一个接一个地添加两个自定义过滤器吗?我现在从编译器收到以下错误消息:Caused by: java.lang.IllegalArgumentException: 在未注册过滤器类 app.shellx.security.JwtTokenFilter 后无法注册
查看完整描述

1 回答

?
弑天下

TA贡献1818条经验 获得超7个赞

我通过在两个过滤器类上使用注释解决了自己的问题@Order。 @Order(1)对于ExceptionTokenVerificationHandlerFilter@Order(2)对于JwtTokenFilter

我还更改了第一个参数的第二个参数addFilterBefore()似乎UsernamePasswordAuthenticationFilter.class 我们不能将自定义过滤器作为此方法中的第二个参数。


查看完整回答
反对 回复 2023-06-14
  • 1 回答
  • 0 关注
  • 157 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信