httpSession.getAttribute( "userId" ) 在 Spring 启动时返回 null,在来自 Angular 前端的一些频繁的 API 请求后启动



我正在开发一个前端在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

最新更新