我创建了两个过滤器来使用 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
我们不能将自定义过滤器作为此方法中的第二个参数。
添加回答
举报
0/150
提交
取消