我創(chuàng)建了兩個(gè)過(guò)濾器來(lái)使用 JWT 令牌執(zhí)行身份驗(yàn)證。我想在第一個(gè)中處理 JWT 異常:exceptionTokenVerificationHandlerFilter 并檢查第二個(gè)中是否一切正常:jwtTokenFilter。如果身份驗(yàn)證因到期日期而失敗,則過(guò)程返回到第一個(gè)過(guò)濾器并向前端發(fā)送一個(gè)響應(yīng),其中包含訪問(wèn)被拒絕的消息。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();? ? }? ??那么我可以在過(guò)濾器鏈中一個(gè)接一個(gè)地添加兩個(gè)自定義過(guò)濾器嗎?我現(xiàn)在從編譯器收到以下錯(cuò)誤消息:Caused by: java.lang.IllegalArgumentException: 在未注冊(cè)過(guò)濾器類(lèi) app.shellx.security.JwtTokenFilter 后無(wú)法注冊(cè)
1 回答

弒天下
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
我通過(guò)在兩個(gè)過(guò)濾器類(lèi)上使用注釋解決了自己的問(wèn)題@Order
。 @Order(1)
對(duì)于ExceptionTokenVerificationHandlerFilter
和@Order(2)
對(duì)于JwtTokenFilter
。
我還更改了第一個(gè)參數(shù)的第二個(gè)參數(shù)addFilterBefore()
似乎UsernamePasswordAuthenticationFilter.class
我們不能將自定義過(guò)濾器作為此方法中的第二個(gè)參數(shù)。
添加回答
舉報(bào)
0/150
提交
取消