【问题标题】:Why spring boot didn't save my sessions and cookies between requests?为什么spring boot没有在请求之间保存我的会话和cookie?
【发布时间】:2022-02-02 01:11:51
【问题描述】:

Spring Boot 不会在请求之间保存会话。我必须要方法:/login,另一个是/getInfo。它们被放置在不同的控制器中。会话数据库是 MongoDB,我可以通过 Mongo Compass 看到正在添加新的会话文档。所以,我向 /login 发出 post 请求,会话正在创建,然后我向 /getInfo 发出请求,我想从会话中获取数据,我得到This is an screen of session and the data in each sessions(including sessions id)。结果我有两个不同的会话

这是会话设置的方式:

session.setAttribute("username", resp.get("username"));

这是从会话中获取数据的方式:

session.getAttribute("username")

Image of request data #1

Image of request data #2

【问题讨论】:

  • 从屏幕截图中,我没有看到请求标头中发送了带有 JSESSIONID 的 cookie。因为没有传入会话 ID,所以每次都会创建一个新会话。然后响应标头将包含一个带有已创建会话的 Set-Cookie 标头 - JSESSIONID。预计这会被传回,以便服务器在后续请求中查找相应的会话。
  • 您能否添加更多细节,例如会话对象是如何注入您的代码中的,这有助于识别问题?

标签: java mongodb spring-boot session spring-rest


【解决方案1】:

对于将在会话中使用@RestController 的任何人,请在您的控制器中添加两行:

    @Autowired
    private HttpSession httpSession;

【讨论】:

    猜你喜欢
    • 2021-02-22
    • 2021-12-10
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2015-08-25
    • 2014-08-28
    相关资源
    最近更新 更多