启用全局方法安全导致 404

Posted

技术标签:

【中文标题】启用全局方法安全导致 404【英文标题】:Enable global method security leads to 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 【参考方案1】:

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

尝试将其替换为:


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

【讨论】:

您可以在 github 上提供代码,这将有助于解决您的问题

以上是关于启用全局方法安全导致 404的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 中的全局方法安全性

[单选题].htaccess文件提供了针对每个目录改变配置的方法,但启用.hatccess都会导致服务器的性能下降,以及会导致一些不安全的因素。在下面的指令中,哪一个可以禁止在目录下使用该文件?

Spring Security 3.2 - 配置全局方法安全性以使用角色层次结构

HTTP put 方法导致 404

Traefik v2:404,同时将 HTTP 流量全局路由到 HTTPS

UE5中启用Lumen全局光照的方法