【问题标题】:Enable global method security leads to 404启用全局方法安全导致 404
【发布时间】:2021-01-17 16:52:13
【问题描述】:

当我启用全局方法安全性时,当我调用属于带有 @Preauthorized 注释的类的端点时,我会得到 404/NotFound

这是我的配置:

@Configuration @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true)
class MethodSecurityConfig : GlobalMethodSecurityConfiguration()

这是控制器:

@RestController
@RequestMapping(Endpoints.BABBLE.ROOT)
@PreAuthorize("@authenticator.checkIfThunderkickAdmin()")
class BabbleRequestController() {

    @PostMapping(Endpoints.BABBLE.APPEND)
    public fun balances(@RequestBody requestData: AppendRequestData, @RequestHeader(HttpHeaders.AUTHORIZATION)  authHeader : String): ResponseEntity<String> {
    ...

【问题讨论】:

  • 您是否尝试将proxyTargetClass = true 设置为@EnableGlobalMethodSecurity

标签: java spring spring-boot kotlin spring-security


【解决方案1】:

我猜你得到了404,因为你有@PreAuthorize,而@EnableGlobalMethodSecurity 注释缺少proxyTargetClass = true。 Spring 丢失了您的控制器,因为它是 JDK 代理而不是 CGLIB,并且不再具有 @RestController

尝试将其替换为:


@Configuration @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true, proxyTargetClass = true)
class MethodSecurityConfig : GlobalMethodSecurityConfiguration()

【讨论】:

  • 您可以在 github 上提供代码,这将有助于解决您的问题
猜你喜欢
  • 2018-05-05
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 2021-12-15
  • 2015-02-12
相关资源
最近更新 更多