gpt4 book ai didi

java - 我们如何有效地防止在一个 session 中同时使用 Web 应用程序?

转载 作者:行者123 更新时间:2023-12-01 05:21:02 25 4
gpt4 key购买 nike

我们构建了一个 Spring MVC Web 应用程序,该应用程序严重依赖用户按特定顺序执行操作,并且在通常情况下(通过不提供“去往你不应该在特定时刻去的地方”),当人们在新选项卡或浏览器窗口中打开应用程序的另一个实例时,我们会遇到一些问题。

由于应用程序将域模型存储在用户的 session 中,因此在另一个窗口中使用该程序可能会弄乱模型的数据,因此我们已经实现了一个页面 ID 机制,该机制可以验证用户是否以正确的顺序使用该程序并且不使用浏览器导航,但是当诸如重置程序(这是一项功能,将用户重定向到主屏幕并清除域模型)之类的事情发生在一个窗口中并且用户然后尝试执行操作时,我们仍然面临问题依赖域模型在另一个窗口中填充有效数据的东西(很快导致 NullPointerException)。

最佳答案

在 session 中存储一些用户详细信息(如 ID、姓名、电子邮件)可能没问题,但存储用户的状态(或任何经常更改和/或显着影响您的其他内容的数据)应用程序)听起来不是一个好主意。

希望以下方法之一适合您:

  • 不要在 session 中保存状态 - 在需要时从数据库加载它(在您的情况下,每当用户尝试访问应按顺序完成的步骤之一时)。如果您使用缓存,这不会对性能产生重大影响。
  • 不要在数据库中保存状态,仅在 session 中保存状态 - 适用于有限的情况(例如,订购机票),您可以推迟提交域对象,直到该过程完成。
  • 使用 Ajax 进行多步骤流程,并且根本不保存状态(除非在浏览器中隐式保存)。这需要将所有步骤放入一个页面中并使用 ajax 化一些代码。

无论如何,如果有人登录并尝试进入步骤 3,他们不应该收到抛出异常,但这是一个不同的故事。

关于java - 我们如何有效地防止在一个 session 中同时使用 Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10418815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com