使用相同的浏览器阻止多个用户登录到同一个域

时间:2010-07-10 14:38:01

标签: asp.net forms-authentication sessionid session-cookies

所以它是一个ASP.NET问题,其中两个用户使用相同的机器,相同的浏览器。

  1. 用户1登录域。
  2. 用户1更改某些数据而不保存。
  3. 用户2在单独的标签中登录域。
  4. 用户1切换回他的标签并保存数据。
  5. 用户1实际上将数据保存到用户2 !!
  6. 这是由以下机制引起的:

    1. 同一浏览器中的不同标签似乎共享相同的会话ID。
    2. 我们将用户身份验证存储在Cookie中,并且Cookie在标签(同一域)之间共享
    3. 因此,当用户1请求保存时,由于cookie已更新为用户2,因此它被识别为用户2。

      所以我想知道是否还有其他任何方法可以防止这种情况发生,除了: 1.使用无cookie会话,因此会话嵌入在uri中。 2.始终在页面中包含一个隐藏字段,以指示哪个用户拥有该页面。

      此致

3 个答案:

答案 0 :(得分:0)

您可以在数据库中添加一些字段来跟踪用户是否已登录,并获取其IP地址,并以此方式限制访问。

答案 1 :(得分:0)

IE8在文件菜单中有一个“新建会话”命令,可以打开一个新窗口,但这与使用2种不同的浏览器非常相似。

隐藏登录表单直到当前用户注销将提高对其他用户登录但不会阻止上述情况的意识。如果注销过程可以刷新域中浏览器中的每个页面,那么它可能会起作用,尽管user1会丢失所有已修改的数据。

答案 2 :(得分:0)

我使用了打开具有特定名称的新窗口的技巧,并始终确保打开的任何页面始终使用该窗口。