繁体   English   中英

对ActiveDirectory进行身份验证

[英]Authenticate against ActiveDirectory

我做了一点谷歌搜索,我遇到了这个有前途的代码

System.DirectoryServices.AccountManagement.PrincipalContext pc = new System.DirectoryServices.AccountManagement.PrincipalContext(ContextType.Domain, "YOURDOMAIN")
// validate the credentials 
bool validatedOnDomain = pc.ValidateCredentials(userName, tb.Text.ToString());

userName初始化为Windows登录名。 它也是一个字符串tb.Text.ToString()是用于输入密码的文本框

更新了代码,它正在运行。 谢谢大家

MSDN说PrincipalContext可以使用两个参数

试着找出这个代码..这在我的项目中完美运行。

public bool  ValidateUser(string varDomain, string varUserName, string varPwd)
    {
        Boolean isValidUser;
        using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, varDomain))
        {
            isValidUser = pc.ValidateCredentials(varUserName, varPwd);
        }
        return isValidUser;

    }

using语句中使用的类型必须可以隐式转换为'System.IDisposable'

意味着您需要将代码更改为:

PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");

// validate the credentials 
bool validatedOnDomain = pc.ValidateCredentials(userName, tb.Text.ToString());

基本上它只是告诉你不能在using语句中使用PrincipalContext ,因为PrincipalContext没有实现名为IDisposable的接口。

编辑正如marc_s在下面指出的那样,您使用的PrincipalContext不是正确的。 它似乎存在于您自己的命名空间中。 您应该使用System.DirectoryServices.AccountManagement那个。

暂无
暂无

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

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