引导 2.6 升级后无法访问端点
Posted
技术标签:
【中文标题】引导 2.6 升级后无法访问端点【英文标题】:Endpoint not accessible after Boot 2.6 upgrade 【发布时间】:2022-01-04 20:07:01 【问题描述】:在我的项目中将 Boot 版本升级到 2.6.0
后,我的端点无法再访问,即使我使用 permitAll()
指令配置了它,我也会自动重定向到登录页面:
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
@Override
protected void configure(HttpSecurity http) throws Exception
http.authorizeRequests()
.mvcMatchers("presentations")
.permitAll()
.anyRequest()
.authenticated()
.and()
.formLogin();
// ...
【问题讨论】:
【参考方案1】:看来这实际上与升级后Spring Boot如何处理mvcMatchers
值有关:
将请求路径与注册的 Spring MVC 处理程序映射匹配的默认策略已从 AntPathMatcher 更改为 PathPatternParser。
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.6-Release-Notes#deferred-openid-connect-discovery
而且这个新设置需要我的presentations
模式以/
开头:
@Override
protected void configure(HttpSecurity http) throws Exception
http.authorizeRequests()
.mvcMatchers("/presentations")
.permitAll()
.anyRequest()
.authenticated()
.and()
.formLogin();
或者,如果我有多个路由并且需要快速修复,我可以设置以下应用程序属性以将其恢复为之前的行为:
spring.mvc.pathmatch.matching-strategy=ant-path-matcher
顺便说一句,path-pattern-parser
是默认值,因为它似乎更有效...这里有一些关于此以及PathPatternParser
和AntPathMatcher
之间差异的附加信息:
编辑:我还意识到使用antMatchers()
使我的一些MockMvc
测试失败,这是在引导2.6.1
中修复的错误。
【讨论】:
以上是关于引导 2.6 升级后无法访问端点的主要内容,如果未能解决你的问题,请参考以下文章
使用 Login Module JBoss Approach 成功登录后,无法(拒绝访问响应)执行带有注释 @RolesAllowed 的 rest 端点
升级到 Catalina (MAC OS) 后无法访问 github
升级到 SDK 2.3.301 后,Service Fabric Actor 或服务随机无法访问
从 4.1 升级到 4.2 后无法访问 extjs 应用程序