Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何限制同一用户C#和Active Directory成员身份的多次登录_C#_Authentication_Login_Active Directory_Asp.net Membership - Fatal编程技术网

如何限制同一用户C#和Active Directory成员身份的多次登录

如何限制同一用户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 }

如何防止同一用户使用广告成员身份和C#多次登录

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

这是一个代码:

                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”,则可以编辑问题,并应将代码放入问题中的代码框中;)