小编mac*_*ejd的帖子

Spring Boot应用程序登录后维护用户会话(HttpSession)

我正在 Spring 创建一个简单的酒店预订 Web 应用程序。目前,我正在构建预订功能的实际实现,使用 HttpSession 来存储对服务器的请求之间的数据。

请参阅以下预订流程:

第 1 步:url:“/”(索引页)- 用户选择位置、入住和退房日期

第 2 步:url:“/reservation/roomselection” - 用户从三种可用房间类型中选择一种

第 3 步:url:“/auth/guest/reservation/details” - 用户添加附加信息并确认预订

重要提示 在进入步骤 3 之前,用户需要在登录页面(url:“/login”)上进行身份验证,因此他会自动重定向到登录页面,并且在身份验证成功后重定向到步骤 3 的 url。

整个会话工作正常(应用程序记住了所有信息,直到第三步),直到我在步骤 3 之前引入了身份验证。登录后,所有信息都将丢失,并且 JSESSIONID cookie 将被重新创建(前一个信息将丢失)。

我确实了解该问题的原因 - 我的登录映射位于不同的控制器中,我想将其保留在那里。

我想问是否有任何简单的解决方案可以让我保留相同的SESSIONID和所有信息直到步骤3(登录页面之后)?

我的愿望如下:

  • 希望避免将登录映射从 HomeController 移动到 ReservationController
  • 希望在步骤 2 和步骤 3 之间保留身份验证。

我附上了 ReservationController、ReservationDto 以及 HomeController(带有登录页面)的代码。

感谢您的所有回答!

@Controller
@RequestMapping("/")
@SessionAttributes("reservationDto")
public class ReservationController {

    private Logger LOG = LoggerFactory.getLogger(getClass());

    private final HotelService hotelService;

    public ReservationController(HotelService hotelService) {
        this.hotelService = hotelService;
    }

    @GetMapping …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-security spring-session

6
推荐指数
0
解决办法
2821
查看次数