2013-04-25 53 views
-1

我有一个简单的要求,即不允许用户一次登录多个浏览器。相同的浏览器很好。在同一台机器上没有多次登录但允许使用相同的浏览器

什么是可以完成的最简单的事情?

式技术:.NET 4.0和SQL服务器2008 R2

+0

你是说'登录到多个浏览器'是什么意思? – Egor4eg 2013-04-25 11:10:13

+0

阅读SO的常见问题。你有什么尝试?你应该先显示你的努力。 http://stackoverflow.com/faq#questions – Javiere 2013-04-25 11:14:20

+0

当我说多个浏览器我的意思是说我登录IE,然后我打开FF并尝试登录,我不应该被允许。但是,如果我在IE中打开一个新标签,那么它很好,因为它是相同的浏览器。如果我去了另一台机器并尝试登录,那么我不应该被允许,因为我已经在IE中的一台机器上登录。 – Varun 2013-04-25 11:18:33

回答

0

见下面我建议:

  1. 商店LastActivityDate为每个用户。如果您使用的是asp.net SqlMembershipProvider - 该字段在那里存在,如果您使用其他身份验证机制 - 可能需要创建该字段并根据某个用户的每个请求进行更新。
  2. 为每个用户添加一个额外的布尔字段LoggedIn。当用户登录时,该字段将被设置为true。如果您使用的是asp.net SqlMembershipProvider,则可以将其值存储在Comment字段中。
  3. 当用户关闭浏览器发送请求到服务器'登出'用户,这意味着设置LoggedIn字段为false。使用window.onbeforeunload javascript事件。
  4. 在用户登录时,您应该为用户检查LoggedIn字段,如果它为假 - 您只需处理该操作。如果不是,则应检查LastActivityDate值,如果超过了超时值,则将定义(让我们说3分钟)处理操作。如果没有 - 拒绝并显示错误信息。此附加检查是必需的,因为我们无法保证始终执行window.onbeforeunload
  5. 最后一步将是一个JavaScript,它会在更新LastActivityDate时相应地调用超时服务器动作。这个脚本应该在登录用户可访问的每个页面上定义。

我希望这个方法很清楚。

相关问题