我正在尝试在Spring Security中启用csrf保护,在阅读this post之后,我提出了以下配置:
public final class CsrfTokenGeneratorFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
CsrfToken token = (CsrfToken) request.getAttribute("_csrf");
response.setHeader("X-CSRF-HEADER", token.getHeaderName());
response.setHeader("X-CSRF-PARAM", token.getParameterName());
response.setHeader("X-CSRF-TOKEN", token.getToken());
filterChain.doFilter(request, response);
}
}
我还在spring-security xml文件中添加了以下内容:
<custom-filter ref="csrfFilter" after="CSRF_FILTER"/>
...
<beans:bean id="csrfFilter" class="com.foo.config.CsrfTokenGeneratorFilter"/>
我现在面临的问题是request.getAttribute(&#34; _csrf&#34;)总是返回一个空值。我错过了什么吗?我该如何将_csrf值添加到请求中?
我使用的是纯HTML + AJAX。
感谢。