java - Spring Security 匿名 401 而不是 403

我对 Spring Security 中的默认行为存在问题,即 Java Config 提供的授权请求。

http
       ....
       .authorizeRequests()
          .antMatchers("/api/test/secured/*").authenticated()

当我在没有登录(使用匿名用户)的情况下调用例如 /api/test/secured/user 时,它会返回 403 Forbidden。当匿名用户想要通过 authenticated()@PreAuthorize 资源获得保护时,是否有一种简单的方法可以将状态更改为 401 Unauthorized?

最佳答案

从 Spring Boot 2 开始,Http401AuthenticationEntryPoint 类已被删除(参见 Spring Boot Issue 10725)。

使用带有 HttpStatus.UNAUTHORIZED 的 HttpStatusEntryPoint 代替 Http401AuthenticationEntryPoint:

http.exceptionHandling()
    .authenticationEntryPoint(new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED));

https://stackoverflow.com/questions/30643029/

相关文章:

java - 我可以将来自 Maven 的属性(在 settings.xml 中定义的密码)注入(i

spring - 创建 ServletContext 资源中定义的名称为 'org.springfr

java - @Transactional(propagation=Propagation.REQU

java - Spring MVC,转发

java - Spring Security Configuration @Order 不是唯一异常

java - 如何让 Spring 打印出哪些 Spring 配置文件处于 Activity 状态?

java - 如何使用 Spring 为 JUnit 测试注入(inject) ServletCon

spring - Java EE 和 Spring 框架的区别

java - 如何从spring security获取当前登录的用户对象?

spring - 如何在 Spring Boot 中为文件上传指定临时目录?