gpt4 book ai didi

java - POST 请求得到 405 响应,而不是由 access-denied-handler 处理

转载 作者:行者123 更新时间:2023-12-01 09:11:13 24 4
gpt4 key购买 nike

这发生在也使用 Spring Security 的 Spring MVC 应用程序中。我已使用映射“/user/save”配置请求,以便只有管理员才能访问它:

<intercept-url pattern="/user/save/**" access="hasAnyAuthority('ROLE_ADMIN')"/>
<intercept-url pattern="/user/**" access="hasAnyAuthority('ROLE_ADMIN','ROLE_OPERATOR'"/>

未经授权的请求由

处理
<access-denied-handler error-page="/denied"/>

当我发出只有 ROLE_OPERATOR/user/save 请求时,我收到以下警告:

WARN http-nio-8080-exec-20 servlet.PageNotFound:208 - Request method 'POST' not supported

/denied 不会被击中。为什么?

类似问题的答案建议为 POST 查询配置 csrf,但 POST 查询适用于 ROLE_ADMIN,因此这不应该是这里的问题。

我尝试在安全配置中指定方法类型,如下所示:

<intercept-url pattern="/user/save/**" access="hasAnyAuthority('ROLE_ADMIN')" method="GET"/>
<intercept-url pattern="/user/save/**" access="hasAnyAuthority('ROLE_ADMIN')" method="POST"/>

但这并没有帮助。

访问被拒绝处理程序在其他情况下可以正常工作,但在权限不足的情况下发出请求时会受到攻击,因此这也不应该成为问题的一部分。

什么可能导致此行为?

最佳答案

就我而言,问题出在 /denied 请求的 Controller 方法中。它有 GET 版本,但没有 POST 版本。添加像这样的 POST 版本:

@RequestMapping(value = "/denied", method = RequestMethod.POST)
public @ResponseBody Response userAccessDeniedForPost() {
...
}

解决了问题。

关于java - POST 请求得到 405 响应,而不是由 access-denied-handler 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40910850/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com