【问题标题】:Spring boot rest controller POST request always create new sessionid using @SessionScope?Spring Boot Rest Controller POST 请求总是使用@SessionScope 创建新的 sessionid?
【发布时间】:2021-04-05 06:55:32
【问题描述】:

我搜索了很多,没有找到合适的答案。

我有 2 个后置控制器方法

@PostMapping("/saveStudentInfo")
public String saveStudentInfo(@RequestBody Students stud, HttpServletRequest request) {
    students.setId(stud.getId());
    students.setStudentName(stud.getStudentName());
    students.setSchoolInfo(stud.getSchoolInfo());
    
    System.out.println("Hello A= "+request.getSession(false).getId());
    
    return "Saved Sucessfully";
}
    
@PostMapping("/saveSubjectInfo")
public String saveSubjectInfo(@RequestBody Subjects sub, HttpServletRequest request) {
    subject.setSubjectName(sub.getSubjectName());
    subject.setSubjectTeacher(sub.getSubjectTeacher());
    System.out.println("Hello B= "+request.getSession(false).getId());
    
    return "Saved Sucessfully Subject";
}

现在来自邮递员的这些调用可以成功运行,因为生成了相同的 JSessionId

==>问题

2 日通过浏览器从 react 应用调用时

saveSubjectInfo 请求我得到不同的 JSessionId,就像在 New-Session 中一样

我已将 Students 和 Subjects 都注释为 @SessionScoped。

==>要求

需要维护会话,并且 JSessionId 需要相同。

【问题讨论】:

  • 可以在此处找到相同的讨论。 stackoverflow.com/questions/2138245/…
  • 这是另一个类似案例的链接,但没有接受答案:stackoverflow.com/questions/62802136/…
  • @RoarS。是的,这个链接很有帮助,谢谢,但现在还有另一个问题。现在我的 JSESSIONID,永远不会更新??
  • @John:JSESSIONID 应该在请求之间保持不变以保持会话状态,还是我在这里解释错误?
  • @John:我相信您的架构存在一些问题。您能否以仅由客户维护状态的方式重新设计您的解决方案?除非您正在运行,否则我看不到如何在浏览器中的选项卡之间保持不同的会话。 Chrome 处于匿名模式。 BR

标签: reactjs spring-boot session http-headers jsessionid


【解决方案1】:

默认情况下,当直接从浏览器 URL 栏中点击 API 时,浏览器支持 GET 方法。此外,POST 和 PUT 方法通常应该与一些数据一起作为主体向服务方法发出请求,这样它就不会在浏览器请求中查看。对于 POST 或 PUT 可以使用 Postman 应用程序。

【讨论】:

  • 请尝试理解问题,再读一遍。如果不清楚,我很抱歉。
  • 是的,你是对的。实际上,如果没有会话,那么如果没有会话,request.getSession(false) 会返回 null。在这种情况下,您需要手动设置会话。使用以下代码 sn -p HttpsSession session = request.getSeaaion(false); if (session != null) { session.setAttribute("abc", request.getParameter("abc")); }
  • 这不是问题,主要问题是使用 @SessionScope 在 Spring Boot 中进行会话维护
猜你喜欢
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
  • 2015-10-04
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 2015-11-07
相关资源
最近更新 更多