2

如何使用 AD 成员资格和 C# 防止同一用户多次登录?

我尝试使用 MembershipUser.IsOnline 但这不受 AD 成员资格提供商的支持。

这是一个代码:

                MembershipUser muser = Membership.GetUser(model.UserName);
                if(muser.IsOnline)
                {
                    //TODO
                }

但它抓住了这个例外:Active Directory 成员资格提供程序不支持“LastLoginDate”

4

3 回答 3

0

这似乎更像是您的活动目录中的配置问题,您可以将网络策略中的缓存凭据设置为 0,因此您不会使用 kerberos 票证缓存。

然后您必须解决下一个问题,即您的网络允许多少次登录,本文介绍了一种解决方法:http://technet.microsoft.com/en-us/magazine/2005.05.utilityspotlight。 aspx

于 2012-11-22T16:04:42.327 回答
0

我认为我的情况有点不同,但我觉得同样的原则可以适用。我的情况是,我必须确保一次只从一台设备登录用户 ID(顺便说一下,表单身份验证,而不是 AD)。当用户 ID 尝试登录另一台设备但仍登录现有设备时,它会终止其现有设备上的会话,同时允许他们登录新设备。我在 Stack Overflow 上的原始帖子中写了一个解决方案:

当同一个用户 ID 尝试在多台设备上登录时,如何终止另一台设备上的会话?

于 2013-08-19T20:26:45.410 回答
0

没有 AD 会员课程的帮助,但仍然:

  • 每次会话开始时将用户的 SessionId 添加到应用程序。
  • 将用户的 SessionId 添加到他的 cookie

您必须检查 SessionId 是否匹配的每个请求。

于 2012-11-22T16:04:10.483 回答