根据ActiveDirectory进行身份验证

本文关键字:身份验证 ActiveDirectory 根据 | 更新日期: 2023-09-27 18:24:37

我在谷歌上搜索了一下,发现了这个有前景的代码

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登录名。它也是一根绳子结核病。Text.ToString()是用于键入密码的文本框

更新了代码,它正在工作。感谢所有

MSDN表示PrincipalContext可以使用两个参数

根据ActiveDirectory进行身份验证

试着弄清楚这段代码。。这在我的项目中非常有效。

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中的。