![Websphere 门户从同一浏览器多次登录](https://linux22.com/image/487041/Websphere%20%E9%97%A8%E6%88%B7%E4%BB%8E%E5%90%8C%E4%B8%80%E6%B5%8F%E8%A7%88%E5%99%A8%E5%A4%9A%E6%AC%A1%E7%99%BB%E5%BD%95.png)
我的 websphere 门户设置有问题。当我从同一个浏览器登录多个门户时(在 Firefox 中每个选项卡一个用户),他们似乎共享同一个会话,因此如果用户 A 先登录,然后用户 B 登录,则用户 A 会消失并获得用户 B 会话。有人知道为什么会发生这种情况吗?如果我尝试使用同一个浏览器两次登录同一个用户,当一个选项卡注销时,两个选项卡都会被注销,情况也是如此。
致以最诚挚的问候 Anders Olme
答案1
您似乎对 Web 应用程序中“会话”的工作方式感到困惑。
HTTP 本身是无状态的,即它没有会话的概念——每个页面请求都是完全独立的。
因此,会话必须使用某种基于 HTTP 的机制。有两种基本方法:
- 饼干
- 个性化页面
如果您使用 Cookie,您的服务器会向浏览器发送一小段数据(通常是会话 ID),浏览器会在查询时返回该数据。这样服务器就可以识别浏览器请求属于某个会话,但由于 Cookie 对浏览器来说是全局的(不是每个窗口或每个选项卡的),因此每个浏览器只有一个会话。
个性化页面意味着在每个页面服务器上,每个链接都嵌入了会话 ID,这样每个页面请求的 URL 中都有会话信息。这样服务器就可以知道请求属于哪个会话。这允许在一个浏览器中进行多个会话。
答案2
这可能是因为相关网站使用 cookie 来存储您的会话信息。因此,每个浏览器只能有一个会话。为了能够在每个选项卡上拥有不同的会话,您需要使用会话状态服务器来保存会话信息。
在 IIS 中,您可以选择在 SQL 数据库中执行此操作,也可以通过会话状态服务器(运行会话状态的特殊服务器)执行此操作。我认为 websphere portal 也有这些选项。
答案3
您可以通过在指向同一台机器的两个不同域下登录门户来解决此问题,这样门户之间就不会共享 cookie。没有共享的 cookie = 会话之间没有共享状态。
根据您的门户网站设置 cookie 的方式,您可能能够使用两个单独的子域来执行此操作 - 或者,如果您的门户网站设置 cookie 以在 *.domain.com 中工作,则可能必须使用两个完全不同的域。如果您的 DNS 上没有多个门户网站域,您可以直接进入主机文件并创建一些虚拟域来指向门户网站的 IP 地址。