【问题标题】:Is it possible to maintain different sessions (users) in different window tabs using Spring 2.5?是否可以使用 Spring 2.5 在不同的窗口选项卡中维护不同的会话(用户)?
【发布时间】:2011-07-21 19:07:37
【问题描述】:

我们有一个要求,即在浏览器窗口的不同选项卡中支持不同的用户。我们如何在 Spring 2.5 中实现这一点?该应用程序基于用户,用户将拥有自己的代理和文章。内部用户应该能够同时登录到不同选项卡中的不同用户帐户并操作他们的数据。非常感谢任何帮助。

【问题讨论】:

    标签: spring spring-mvc spring-security


    【解决方案1】:

    在决定发送哪些 cookie 时,浏览器的 cookie 存储不会区分不同的窗口或选项卡。因此,基于 cookie 的方法将无济于事。

    我对替代方案的建议是隐藏一个“用户名”参数,该参数作为来自给定选项卡或窗口的所有请求的 URL 查询参数来回传递。您可以通过使用一些 Javascript 为刚刚加载的页面中的每个 HTML 表单添加隐藏参数来优化浏览器请求中的参数设置。参数值将从当前页面 URL 的查询字符串中提取。您只需要确保所有页面都包含标题中的内容以加载 JS 并在页面加载完成时运行它。

    【讨论】:

    • 谢谢斯蒂芬!我正在考虑使用 servlet 上下文来针对用户对象存储用户 ID,并使用隐藏字段机制来获取用户对象。我想知道是否还有其他更清洁的方法可以实现这一目标。非常感谢您的及时回复。
    【解决方案2】:

    一般来说,不会,因为浏览器窗口中的所有选项卡都共享相同的 cookie。

    一种方法是使用多个域名都指向同一个应用程序。每个域名都有自己的一组 cookie。打开新标签后,您需要通过某种方式切换到新域名。

    怎么样,有一套书签工具栏书签,每一个对应一个不同的域名。按住 Control 键单击书签,它会在新选项卡中打开。您可以在导航中为用户提供指向他们可以拖到工具栏上的不同域的链接。

    根据您的用户使用的浏览器,您可能会变得更加流畅 - 在某些浏览器中,Javascript window.open() 会打开一个新选项卡。您可以让 JS 在 window.open() 之前计算新域名。

    【讨论】:

    • 我会尝试一些新的东西。非常感谢您的及时回复。欣赏它。
    猜你喜欢
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2014-05-19
    • 2017-10-10
    • 1970-01-01
    • 2018-02-21
    相关资源
    最近更新 更多