启用全局方法安全导致 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的主要内容,如果未能解决你的问题,请参考以下文章
[单选题].htaccess文件提供了针对每个目录改变配置的方法,但启用.hatccess都会导致服务器的性能下降,以及会导致一些不安全的因素。在下面的指令中,哪一个可以禁止在目录下使用该文件?
Spring Security 3.2 - 配置全局方法安全性以使用角色层次结构