如何限制同一用户C#和Active Directory成员身份的多次登录
如何防止同一用户使用广告成员身份和C#多次登录 我尝试使用MembershipUser.IsOnline,但这不受AD会员资格提供商的支持 这是一个代码:如何限制同一用户C#和Active Directory成员身份的多次登录,c#,authentication,login,active-directory,asp.net-membership,C#,Authentication,Login,Active Directory,Asp.net Membership,如何防止同一用户使用广告成员身份和C#多次登录 我尝试使用MembershipUser.IsOnline,但这不受AD会员资格提供商的支持 这是一个代码: MembershipUser muser = Membership.GetUser(model.UserName); if(muser.IsOnline) { //TODO }
MembershipUser muser = Membership.GetUser(model.UserName);
if(muser.IsOnline)
{
//TODO
}
但它抓住了这个例外:“LastLoginDate”不受Active Directory成员资格提供程序的支持,不受AD成员资格类的帮助,但仍然:
- 每次会话启动时将用户的SessionId添加到应用程序中
- 将用户的会话ID添加到其Cookie中
每个请求都必须检查SessionId是否匹配。这似乎更像是active directory中的配置问题,您可以将网络策略中的缓存凭据设置为0,这样您就不会使用kerberos票证缓存
然后你必须解决下一个问题,那就是你的网络允许多少次登录,这篇文章描述了一种方法:我认为我的情况有点不同,但我觉得同样的原则可以适用。我的情况是,我必须确保一次只从一个设备登录用户ID(顺便说一句,表单身份验证,而不是AD)。当用户ID试图登录到另一个设备而仍登录到现有设备时,它会在允许用户登录到新设备的同时终止其现有设备上的会话。我在关于堆栈溢出的原始帖子中写了一个解决方案:
是的。我尝试使用这个“代码”成员身份user muser=Membership.GetUser(model.UserName);如果(muser.IsOnline){//TODO}但Active Directory成员资格提供程序不支持此例外:“LastLoginDate”,则可以编辑问题,并应将代码放入问题中的代码框中;)