如何在Spring会话中存储每个用户数据?

Jul*_*lia 3 java spring spring-mvc

我想为每个登录的用户存储,他的身份在Spring会话中.我做的是:

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.getRequestAttributes()).getRequest();
    HttpSession session = request.getSession(true);

    session.getServletContext().setAttribute("userId", userId); 
Run Code Online (Sandbox Code Playgroud)

当我需要id时,我正在做

 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
                .getRequestAttributes()).getRequest();  
 HttpSession session = request.getSession();
 Long userId = (Long) session.getServletContext().getAttribute("userId");
Run Code Online (Sandbox Code Playgroud)

第一个用户登录,获取会话ID即可.

第二个用户登录,会话ID被覆盖(我看到因为第一个用户的每个下一个操作,获取第二个用户的用户ID)

实现这一点的正确方法是什么,显然我不能正确理解会话?

感谢所有的建议

Cra*_*tis 5

您将属性存储在ServletContext,该属性在同一个Web应用程序的所有会话之间共享.

您应该将属性存储在HttpSession自身中:

session.setAttribute("userId", userId);

然后检索它:

Long userId = (Long) session.getAttribute("userId");