0

我有一个简单的要求,不允许用户一次登录多个浏览器。同一个浏览器就好了。

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

技术:.net 4.0 和 sql sever 2008 R2

4

1 回答 1

1

请参阅以下我的建议:

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

我希望方法是明确的。

于 2013-04-25T12:59:57.547 回答