我正在 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(登录页面之后)?
我的愿望如下:
我附上了 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)