spring-boot - Spring security 忽略了我的 authenticationEntryPoint
问题描述
我最近升级到 Spring Boot 2.1.7 和 Spring security 5.1.6,出于某种原因,Spring Security 忽略了我为处理 HTTP 403 响应而配置的异常处理。由于此页面不存在,它不断重定向到 /error 导致 HTTP 404 错误。我的 Spring Security 配置如下所示:
http.exceptionHandling()
.authenticationEntryPoint(new Http403ForbiddenEntryPoint())
.and()
.addFilter(headerAuthenticationFilter)
.httpBasic().disable()
.csrf().disable()
.authenticationProvider(preAuthenticatedAuthenticationProvider)
.authorizeRequests()
.antMatchers("/api/**")
.hasAnyRole("ROLE1", "ROLE2")
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
有人知道我做错了什么吗?
解决方案
问题似乎是使用较新的 Spring Boot 版本需要添加额外的排除项。这是配置的片段:
@Configuration
@EnableWebSecurity(debug = true)
@EnableAutoConfiguration(exclude = { WebMvcAutoConfiguration.class, ErrorMvcAutoConfiguration.class })
@EnableGlobalMethodSecurity(securedEnabled = true)
@PropertySource("classpath:application.properties")
public class ApiSecurityConfiguration extends WebSecurityConfigurerAdapter {
我必须添加的部分是 ErrorMvcAutoConfiguration.class。在此之前没有必要。
推荐阅读
- arrays - 在实现堆栈和队列时,数组相对于链表的优势是什么
- sql-server - 使用 sqlpackage.exe 自定义 SQL Server Data Tools (SSDT) 包的部署,以因环境而异
- python - stats.nba.com 的 Python urllib 请求和 urlopen 超时
- angular - Angular路由器在重定向之前加载组件?
- java - 如何在 RxJava 中使用 HttpURLConnection?
- google-api - 即使在服务器到服务器身份验证之后也无法使用 Google Play Developer API
- javascript - 将 Ajax 数组插入日期范围选择器
- swagger-2.0 - 全局定义部分和组件部分有什么区别?
- r - R中具有3个参数(4d)的绘图函数
- apache-spark - Spark中的RDD和Dataframe有什么区别?