繁体   English   中英

如何从服务器获取用户的SID?

[英]How do I get the user's SID from the server?

我有以下代码:

public bool UserCheck()
    {
        using (var context = new PrincipalContext(ContextType.Domain))
        {
            try
            {
                using (var user = UserPrincipal.FindByIdentity(context, IdentityType.Sid, WindowsIdentity.GetCurrent().User.Value))
                {
                    if (user != null) return true;
                    else return false;
                }
            }
            catch (System.Runtime.InteropServices.COMException) { return false; }
        }
    }

它将检查当前用户是否存在于服务器的AD中。

在我的机器上进行测试时,此代码工作正常,但是当我发布它时,代码开始返回false,在进一步调试后,我发现

WindowsIdentity.GetCurrent().User.Value

正在获取SERVER的SID,而不是用户的SID。

发布代码后,如何获取用户的SID?

当您在开发计算机上运行站点时,Visual Studio将站点加载到IIS Express中。 IIS Express以登录用户身份运行。 这就是为什么在执行时看到用户名的原因:

WindowsIdentity.GetCurrent().User.Value

发布Web应用程序之后,您可能正在IIS下运行它。 您需要将IIS和ASP.NET配置为使用集成Windows身份验证(使用Kerberos或NTLM)

有关更多信息,请参见此链接 ;对于“ ASP.NET和Windows身份验证”,请参见Google。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM