会话管理

时间:2012-01-11 13:03:26

标签: asp.net asp-classic

我正在为我的登录页面使用会话,该会话将在会话中保存userId。如果使用相同的系统和相同的浏览器但使用浏览器的单独选项卡记录两个不同的用户,则userid的会话值将重置为最后登录的用户。为什么呢?

4 个答案:

答案 0 :(得分:6)

浏览器只会为一个域保存一个sessionID(在cookie中),在后续回发中会将其返回给服务器以识别会话。

如果您打开另一个标签并以其他人身份登录,则最新的sessionID将覆盖之前的标签..

所以它不可能在同一个浏览器上有不同的登录...但是使用不同的浏览器(不是同一浏览器的另一个实例)

答案 1 :(得分:5)

如果您使用Cookie跟踪经过身份验证的用户,则无法实现此目的,因为Cookie是在浏览器标签之间共享的。大多数网站也是如此。以Gmail为例:您使用一个帐户登录,然后打开一个新标签,您将自动使用同一个用户登录,因为这些Cookie是共享的。

为了实现您的要求,您基本上必须更改跟踪经过身份验证的用户的方式。你不应该再使用cookies了。

有两种可能性浮现在脑海中:

  • 在每个包含会话ID的页面上使用隐藏字段
  • 将会话ID附加到所有请求的查询字符串

答案 2 :(得分:0)

由于会话在标签之间共享,因此无法实现。他们需要使用不同的浏览器,否则最后一个用户会话将删除以前的用户会话

答案 3 :(得分:0)

Internet Explorer在其“文件”菜单上提供“新会话”功能。这将允许第二个用户登录到您的站点,而另一个用户已经登录。但是这将启动一个新窗口,无法在另一个选项卡中运行单独的会话。

其他浏览器可能会提供类似的功能。