鉴于在Spring security 3.2中,为了防止CSRF攻击,我们必须包含CSRF令牌。它也适用于ajax请求。对于ajax,我们必须包含标头令牌。但这似乎是很多返工。覆盖CSRFFilter是一种方式。有没有更好的方法可以绕过令牌检查ajax请求
答案 0 :(得分:0)
此代码将帮助您实现这一目标,并且由于您尚未粘贴配置,因此很难提供帮助。
http.csrf().requireCsrfProtectionMatcher(new RequestMatcher() {
private Pattern allowedMethods = Pattern.compile("^(GET|HEAD|TRACE|OPTIONS)$");
private RegexRequestMatcher apiMatcher = new RegexRequestMatcher("/v[0-9]*/.*", null);
@Override
public boolean matches(HttpServletRequest request) {
// No CSRF due to allowedMethod
if(allowedMethods.matcher(request.getMethod()).matches())
return false;
// No CSRF due to api call
if(apiMatcher.matches(request))
return false;
// CSRF for everything else that is not an API call or an allowedMethod
return true;
}
});
如果这是您想要的,请告诉我。