我正在开发一个前端在Angular 5中实现的应用程序,而后端在Spring Boot中,我使用JWT令牌进行身份验证。我无法解决的问题是,当用户登录时,我在后端的HttpSession中设置了userId,以便在同一用户稍后的请求中使用userId。
session.setAttribute("userId", userData.getUsername());
如果同一个用户以半秒的间隔向后端的RestControllers发出请求,httpSession将正确返回,如果我发出非常快速的请求,httpSession将开始返回NULL。我正在向Angular提出各种服务的请求。
getMyAccountList(){
return this.http.get('/api/account/getMyAccountList');
}
所以我发现这是由于Spring Security的会话固定行为,默认情况下它是活动的。在WebSecuirtyConfigurerAdapter中配置HttpSecurityhttp可以解决这个问题。只需要添加此配置。
http.sessionManagement().sessionFixation().none();
也可以参考这篇文章:Apache Tomcat 7在每个请求上更改JSESSIONID