用户登录后 cookie 中 SESSION 未发生变化
登录前 Request 携带 cookie 中 SESSION ,登录成功后未重新设置 cookie,后面的请求仍是该 SESSION,安全隐患是攻击者利用该SESSION,做非法操作
代码优化
//登录
public void login(){
//用户校验
validateUser();
//登录成功后创建用户session
createSession();
}
private void createSession(){
//先通过Spring获取HttpServletRequest
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
//refresh JSESSIONID cookie after login
//获取旧的sesssion
HttpSession sessionOld = request.getSession(false);
if(sessionOld != null && !sessionOld.isNew()){
//旧session失效
sessionOld.invalidate();
}
//get new session, set user attribute
//设置新的session
HttpSession session = request.getSession(true);
session.setAttribute(SESSION_USER_ID,user.getUserId());
}