【问题标题】:Multiple GWT Session parallel in the same Browser多个 GWT Session 在同一个浏览器中并行
【发布时间】:2012-01-22 01:05:00
【问题描述】:

我们有一个 SmartGWT 应用程序(具有 Spring 安全性),我们希望同一用户能够登录该应用程序 使用相同的登录信息,但针对不同的标签获得不同的会话。

  1. 用户 1 使用应用程序打开浏览器选项卡 Tab1
    • 获取会话 Session1
    • 选择一个角色...
  2. 用户 2 在浏览器中打开一个带有应用程序的新 Tab2

    • 获得一个新的会话 Session2

    用户同时使用 Tab1 和 Tab2。会话不应相互影响。

我们当前的应用程序使用弹簧安全性。基于角色可能没有问题 用户的 GrantedAuthorities。但我们宁愿有完全不同的会话,以便 简化应用程序的代码。

在不使会话无效的情况下,似乎不可能建立基于 Cookie 的会话系统。 但是会话不应失效...只有新会话应附加到新选项卡。

HttpSession.getSession(true) 仅在不存在时返回新会话。

似乎可以使用 URL 重写方法来创建新会话。 1 谁能告诉我们这是否可能和

1a 如果是,请告诉我们实施问题 或步骤。

一方面我不完全确定如果使用 URL 重写方法会有什么后果。

2 这是否意味着如果客户端发送一个没有会话 ID 的请求,就会创建一个新会话

3 url 重写方面是否对 GWT 后端有其他影响

【问题讨论】:

    标签: session gwt spring-security smartgwt browser-tab


    【解决方案1】:

    由于只有一个会话可以附加到浏览器和网站,我可能想到的唯一方法是为每个选项卡设置不同的子域,这将强制创建新会话(那时还指向一个新的登录,所以一个 openid 登录会很方便)。

    我的意思是,例如标签 1 中的 www.yourdomain.com、标签 2 中的 www2.yourdomain.com、标签 3 中的 www3.yourdomain.com 等等,直到标签的最大数量。

    或者,如果可能的话,让用户使用 2 或 3 种不同的浏览器(例如 Firefox、Opera、Chrome、Safari 等等)会更简单。

    【讨论】:

    • 如果会话与 cookie 一起存储,似乎就是这种情况。但是如果禁用会话 cookie 会怎样?
    • 如果您禁用会话 cookie,或者用户不接受 cookie,则在为新标签加载内容时,您必须确保 URL 不包含 JSESSIONID 参数。
    猜你喜欢
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多