【发布时间】:2015-04-02 07:40:37
【问题描述】:
我们正在开发 Java-Gwt Web 应用程序,我们有一个登录页面来访问该应用程序。最近我们面临 一种情况如下所述。
1) 用户在一个浏览器窗口(比如 Chrome)中打开应用程序,登录页面将显示给用户。 2) 用户再次在另一个浏览器窗口(例如 Chrome)中打开相同的应用程序,还会向用户显示登录页面。
在这里,用户输入登录凭据并从第一个浏览器窗口访问应用程序,然后用户再次输入 在第二个浏览器窗口中使用不同的登录凭据并访问应用程序。在这里,我们打开了两个不同的应用程序 2 个浏览器窗口中的凭据,即使浏览器实例相同。
如果我们像上面那样做,根据我们的实现,我们将进入不一致状态。
在上述情况下最好的方法是什么?
我在“Gmail”应用程序中观察到上述情况,如果用户登录第一个窗口,它会重新加载第二个窗口。
如果我们认为“Gmail”是一个很好的例子,如何在 GWT 或 JavaScript 中从第一个窗口检测第二个浏览器窗口?
任何建议都会很棒。
【问题讨论】:
-
您是否尝试像 Gmail 一样支持同时使用多个帐户。对于在另一个窗口中检测登录,我认为它应该基于会话。如果第二个窗口可以异步检测到会话已创建,则可以在登录状态下重新加载页面
-
是的,用户可以在同一个浏览器但不同的窗口中使用多个帐户登录,现在我们想让它像 gmail 应用程序一样。我们在显示登录页面之前创建会话。
-
您是否无法跨窗口检测会话
-
@nitigyan,我们正在为我们的实现生成 2 个窗口的 2 个不同的会话 ID。
-
如果您的会话存储在 cookie 中,则不应为同一浏览器的两个窗口获取两个会话 ID,除非其中一个窗口处于“隐身模式”(或类似模式)。如果您遇到这种行为,您的服务器端会话持久性就会被破坏。
标签: java javascript gwt web-applications browser