이는 스프링 보안이 사용되는 스프링 MVC 애플리케이션에서 발생합니다. 관리자 만 그것에 접근 가질 수 있도록 내가 매핑 "/user/save
"로 요청을 구성한 :POST 요청은 액세스 거부 핸들러에 의해 처리되는 대신 405 응답을 얻습니다.
<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"/>
에 의해 처리됩니다 내가 /user/save
요청은 ROLE_OPERATOR
필요 할 때 나는 다음과 같은 경고를 얻을 수 :
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"/>
를하지만 도움이되지 않았다.
액세스 거부 처리기는 다른 경우에 올바르게 작동하고 권한이 충분하지 않은 요청이있을 때 적중되므로 문제의 일부가 아니어야합니다.
이 문제가 발생할 수있는 이유는 무엇입니까?