将springBoot升级到2.6.2后,401响应中没有内容



默认的错误处理不会返回正确的信息;我将SpringBoot版本从2.5.2升级到2.6.2案例场景:无身份验证发送get方法:

邮差对springBoot 2.6.2的回应:springBoot 2.6.2版

邮差对springBoot 2.5.2的回应:springBoot 2.5.2版

缺少退货内容是否为预期行为?我将使用@ControllerAdvice来解决这个问题。

项目详细信息:

<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

此问题是由Spring 2.6.2附带的新筛选器ErrorPageSecurityFilter引起的。在这里,你可以找到一个尝试过不同情况的人。

在另一个与ErrorPageSecurityFilter相关的问题中,有人说:

ErrorPageSecurityFilter使用HttpServletRequest.getRequestURI((作为WebInvocationPrivilegeEvaluator.isAllowed(uri,authentication(方法的uri参数,该方法包含上下文路径。JavaDoc指出,在uri参数中应该排除上下文路径。

我认为这是因为context-path没有像这里的描述中那样被排除在uri参数中。

也许看看这里的建议会对你有所帮助。

相关内容

  • 没有找到相关文章

最新更新