我写过控制器。我有2种方法。首先是GET,第二是POST。 一切都运作良好!
何时我添加了spring-security.xml POST不起作用! 我的过滤器:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我有这个错误:
HTTP Status 405 - Request method 'POST' not supported
我的春天安全看起来像这样:
<http auto-config="false" use-expressions="true">
<-- remove from here
<intercept-url pattern="/admin**" access="hasRole('ADMINISTRATOR')" />
<access-denied-handler error-page="/403" />
<form-login login-page="/login" default-target-url="/admin"
authentication-failure-url="/login?error" username-parameter="NAME"
password-parameter="PASSWORD" />
<logout logout-success-url="/login?logout" />
<csrf />
to here -->
</http>
<authentication-manager alias="authenticationManager">
...
最有趣的是,如果我删除 http标记的内容,的作品 ... 我也评论过......为什么会这样?
答案 0 :(得分:1)
&lt; csrf /&gt;这会导致问题。 Post也应该发送csrf令牌。另请参阅Cross Site Request Forgery (CSRF)
答案 1 :(得分:1)
如果您想发送带有方法发布的表单。你需要像这样发送一个令牌
<input type="hidden" name="${_csrf.parameterName}"
value="${_csrf.token}" />
只需将此标记添加到youo表单中即可。