将 Spring Security 升级到 3.2.0.RELEASE 不再在 Spring taglib 中提供 CSRF 令牌

Posted

技术标签:

【中文标题】将 Spring Security 升级到 3.2.0.RELEASE 不再在 Spring taglib 中提供 CSRF 令牌【英文标题】:Upgrading Spring Security to 3.2.0.RELEASE no longer provides CSRF token in Spring taglib 【发布时间】:2014-02-07 08:34:04 【问题描述】:

我的项目使用 Spring Security 3.2.0.RC2,而我的 JSP 使用 Spring taglib 的 form:form 标签自动将 CSRF 令牌插入到我的表单中。

升级到 Spring Security 3.2.0.RELEASE 后,我发现 form:form 标签不再自动将 CSRF 令牌插入到我的表单中,我现在必须通过将其放置在我的表单中来手动添加它:

有没有其他人遇到过同样的问题?如果是这样,您为解决方法做了什么?谢谢。

【问题讨论】:

【参考方案1】:

您需要确保使用@EnableWebMvcSecurity 注释而不是Hello Spring MVC Security Java Config 中所述的@EnableWebSecurity 注释。添加新注解的原因是为了解析SEC-2436。您会注意到添加了 SEC-2463 是为了在参考的 CSRF 部分中更好地记录这一点。

【讨论】:

太好了,谢谢罗布的回答。那成功了。我没有意识到在从 Spring Security 3.2.0.RC2 到 3.2.0.RELEASE 的更改中,要使用的注释已更改为 @EnableWebMvcSecurity;我一定在发行说明中错过了这一点。再次感谢。 没问题。由于更新文档的 JIRA 暗示这个细节并不像应有的那么明显。

以上是关于将 Spring Security 升级到 3.2.0.RELEASE 不再在 Spring taglib 中提供 CSRF 令牌的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security 3.2 - 将注册表单添加到登录页面

从 stark-security 升级到 spring 安全插件

将 Spring Security SAML 升级到 1.0 版本需要啥

将 Spring Security 升级到 3.2.0.RELEASE 不再在 Spring taglib 中提供 CSRF 令牌

将 Spring Boot 升级到 2.4.1

Spring-Security:升级到 Spring-Security 4.1 后,用户名发送为空以进行登录