2012-01-11 164 views
0

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

+0

它是asp.net或asp-classic,不是两者。请修复标签。 – 2012-01-11 20:28:14

+0

在安全会话管理一篇好文章,你会发现非常有用:http://www.linuxforu.com/2011/02/securing-apache-part-6-attacks-session-management/ – Sam 2012-12-29 02:28:09

回答

0

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

+0

会话没有标签之间共享。 Cookie之间共享(显然假设这些标签指向相同的域)。因此,如果您使用Cookie跟踪用户会话,由于这些Cookie被共享,会话也将被共享。但是,如果您更改跟踪经过验证的用户的方式,并且不使用cookie,则会在选项卡之间共享会话。 – 2012-01-11 13:09:08

+1

确实,当我说会话时我假设使用了cookie。设置无cookie的选项以使用web.config上的url工作。但是不安全,所以我甚至没有想到它。 – H27studio 2012-01-11 13:39:44

5

如果跟踪验证的用户使用cookie是没有办法实现这一点,因为Cookie的浏览器标签页之间共享。这与大多数网站一样。以Gmail为例:您只需使用一个帐户登录,然后您打开一个新标签页,并且您自动使用同一用户登录,因为Cookie是共享的。

为了实现你问你基本上会改变您在跟踪验证的用户的方式。你不应该再使用cookies。

2的可能性浮现在脑海中:

  • 使用隐藏字段将包含会话ID
  • 每一页上追加会话ID的所有请求的查询字符串
6

有将只有一个sessionID保存(在饼干),以供浏览器,这将返回到服务器上的后续回发,以识别会话域..

,如果你打开另一个选项卡,然后登录其他人,然后最新的sessionID将覆盖旧..

因此,它不可能有一个相同browser..but不同的登录信息使用不同的浏览器(不另一个实例的相同的浏览器)

0

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

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