默认的错误处理不会返回正确的信息;我将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参数中。
也许看看这里的建议会对你有所帮助。