1

我们有一个 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后端有其他影响

4

1 回答 1

1

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

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

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

于 2011-12-16T16:21:20.367 回答