Java Spring security:激活csrf将禁用/注销

Java Spring security:激活csrf将禁用/注销,java,spring,spring-security,csrf,Java,Spring,Spring Security,Csrf,我正在尝试启用csrf保护,但仅限于登录页面。 我添加了以下spring安全配置(标签已经存在) ... 登录页面现在确实具有csrf保护。然而,由于一个奇怪的原因,/logout现在给出了一个404错误。事实上,如果我用/foobar替换/login,我在/logout上仍然有一个404错误。但是如果我在标记中添加disabled=“true”,它会再次工作 知道为什么吗 谢谢如果启用了csrf,POST请求将执行注销,如本问题所述。也许这个()能帮上忙 在 据说: 如果启用了CSRF保护

我正在尝试启用csrf保护,但仅限于登录页面。 我添加了以下spring安全配置(标签已经存在)


...
登录页面现在确实具有csrf保护。然而,由于一个奇怪的原因,
/logout
现在给出了一个404错误。事实上,如果我用
/foobar
替换
/login
,我在/logout上仍然有一个404错误。但是如果我在
标记中添加
disabled=“true”
,它会再次工作

知道为什么吗


谢谢

如果启用了csrf,POST请求将执行注销,如本问题所述。也许这个()能帮上忙

在 据说:

如果启用了CSRF保护(默认),Spring Security的LogoutFilter将仅处理HTTP POST。这确保了注销需要CSRF令牌,并且恶意用户无法强制注销您的用户。 最简单的方法是使用表单注销。如果你真的想要一个链接,你可以使用JavaScript让链接执行POST(也就是说,可能在一个隐藏的表单上)。对于禁用JavaScript的浏览器,您可以选择使用链接将用户带到将执行POST的注销确认页面


本节还解释了如何执行HTTP GET请求注销,尽管通常不建议这样做。

如果启用了csrf,POST请求将执行注销,如本问题所述。也许这个()能帮上忙

在 据说:

如果启用了CSRF保护(默认),Spring Security的LogoutFilter将仅处理HTTP POST。这确保了注销需要CSRF令牌,并且恶意用户无法强制注销您的用户。 最简单的方法是使用表单注销。如果你真的想要一个链接,你可以使用JavaScript让链接执行POST(也就是说,可能在一个隐藏的表单上)。对于禁用JavaScript的浏览器,您可以选择使用链接将用户带到将执行POST的注销确认页面

本节还解释了如何执行HTTP GET请求以注销,尽管通常不建议这样做

<http ... >
  <sec:csrf request-matcher-ref="myBean" />
  ...
</http>

<bean id="myBean" class="org.springframework.security.web.util.matcher.AntPathRequestMatcher">
  <constructor-arg name="pattern" value="/login"/>
  <constructor-arg name="httpMethod" value="POST"/>
</bean>