AuthenticationFilter 里抛出了一个AuthenticationException,没有被ExceptionTranslationFilter里面被捕获,进入到AuthenticationEntryPoint,而是被ServletInitialHandler捕获,跳转到/error 路径。我是一个前后端分离的项目的,我配置里关闭了网页登录相关的,配置如下
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
return httpSecurity.authorizeHttpRequests(
requests -> requests
.requestMatchers(springSecurityProperties.getPermitAllPaths()).permitAll()
.anyRequest().authenticated()
)
.authenticationManager(authenticationManager())
.formLogin(AbstractHttpConfigurer::disable)
.logout(AbstractHttpConfigurer::disable)
.sessionManagement(AbstractHttpConfigurer::disable)
.httpBasic(AbstractHttpConfigurer::disable)
.csrf(AbstractHttpConfigurer::disable)
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.cors(cors -> cors.configurationSource(corsConfigurationSource()))
.addFilterBefore(authenticationFilter, UsernamePasswordAuthenticationFilter.class)
.exceptionHandling(exception ->
exception.accessDeniedHandler(new IrsAccessDeniedHandler())
.authenticationEntryPoint(new IrsAuthenticationEntryPoint())
)
.build();
}
AuthenticationFilter 是继承OncePerRequestFilter的,也放到了UsernamePasswordAuthenticationFilter之前addFilterBefore(authenticationFilter, UsernamePasswordAuthenticationFilter.class)
可是在AuthenticationFilter 抛出的AuthenticationException 确定没能通过IrsAuthenticationEntryPoint捕获到,导致无法正确处理异常,请问需要怎么做才能通过 IrsAuthenticationEntryPoint 捕获到 AuthenticationFilter里的异常