使用Spring Security重命名CSRF令牌标头名称

时间:2014-02-06 13:35:02

标签: angularjs spring-mvc spring-security

我参考了以下关于csrf configuration的Spring Security文档。

csrf令牌的默认标头名称似乎是: X-CSRF-TOKEN

如文档中所述:

<meta name="_csrf" content="${_csrf.token}"/>
<!-- default header name is X-CSRF-TOKEN -->
<meta name="_csrf_header" content="${_csrf.headerName}"/>

似乎AngularJs使用以下标题名称: X-XSRF-TOKEN

  1. 如何更改Spring安全端的标题名称?
  2. 这是最好的方法吗?
  3. 它是否会影响经典非ajax表单提交的CSRF保护,特别是XSRF参数名称?

1 个答案:

答案 0 :(得分:4)

您可以创建自己的HttpSessionCsrfTokenRepository bean实例,在此实例上设置属性headerName,并将对此实例的引用传递给CSRF配置<security:csrf token-repository-ref="..." />。例如,

<bean id="csrfTokenRepository" class="org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository">
    <property name="headerName" value="X-SECURITY" />
</bean>

<security:http>
    <security:csrf token-repository-ref="csrfTokenRepository" />
</security:http>