asp.net - 将 ASP.NET 用户 session 限制为单个事件 session 的最佳做法是什么?

标签 asp.net session asp.net-membership

我有一个要求,即登录用户在 ASP.NET 应用程序中一次只能有 1 个事件 session 。目前,单个用户可以同时从多台机器登录并获得多个 session 。我将标准 ASP.NET 成员身份与 AppFabric 一起用于 session 状态管理。我是否缺少 ASP.NET 成员资格中可用的一些基本开关来强制执行此操作?否则,计划是向成员数据库添加一个表,该表将包含 aspnet_Users.UserId 和 sessionId 列,并简单地确保当前 session ID(后入)是唯一允许的 session 。谢谢你的帮助!

最佳答案

您可以像在用户表中保存上次登录时间一样简单地执行此操作。在登录时将相同的信息保存在用户的 session 状态中。

检查时间是否与每个页面请求相匹配。如果服务器在您比较时在用户表中有更新的时间,您就知道您不再处于该用户的最新 session 中,并且可以通过重定向到注销来终止当前 session ,或者通过重新登录当前 session 来终止较新的 session session 。

从技术上讲,这可以通过 session 的任何唯一可识别信息来完成,例如 GUID,甚至是 session ID 本身,但我喜欢时间,因为它还提供了其他一些你可以衡量和找出的东西, "当前 session 是多少岁?"

但是...我通常喜欢看到网络应用程序按照预期的方式运行,这是用户 ID 维护 session 的地方,而不是连接本身。当网站将用户踢出时,用户会非常生气。如果您需要这样做,一定要有充分的理由.. 例如订阅服务(可能是流媒体),一次只能访问一台设备或类似的服务。

关于asp.net - 将 ASP.NET 用户 session 限制为单个事件 session 的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8418429/

相关文章:

session - 为什么我们需要 session ,当我们已经有 cookies 的时候?

asp.net - 如何在成员(member) asp.net 2008 中获取当前用户名

c# - 它的网站使用的程序集的版本号列表

c# - 如何查询复数n :m relationship for getting an IEnumerable in C#

php - 通过 jQuery 发送 PHP 变量到登陆页面,同时跳过第三方提交脚本?

asp.net-mvc - 对于 ASP.NET 成员,我如何显示 403?

c# - Membership.DeleteUser() 因 RI 约束而失败

asp.net - 尝试访问 .asmx Web 服务上不存在的 Web 方法时如何抑制错误消息

c# - 如何在asp.net中提取jquery.ajax序列化表单参数

linux:检测您是否在 vnc session 中运行