配置完spring security的csrf功能后,用APP SCAN扫描,发现登录页面没有进行会话更新(changeSessionId),如果使用servlet3.1+,可以直接在request中调用changeSessionId()方法。如果使用的是旧版本的servlet,则可以使用如下方法:
/*spring security csrf token reinvoke*/
Object obj = null;
obj =
req.getAttribute(CsrfToken.class.getName());
req.getSession().invalidate();
req.getSession();
if(obj!=null){
req.getSession().setAttribute(HttpSessionCsrfTokenRepository.class
.getName().concat(".CSRF_TOKEN"), obj);
}
上述方法只是将csrf的Token保存到新session中去,如果session中还有其他属性,则会丢失,那么可以参考以下方法:
/**
* update session id
* req.changeSessionId()
* @param req
* @param resp
*/
protected void changeSessionId(HttpServletRequest req,
HttpServletResponse resp) {
HashMap<Str