0

我正在创建这个项目以部署在我们公司的 Intranet 中。我正在使用此代码来验证用户登录:

entry.Username = strUserName;
entry.Password = strPassword;

DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.Filter = "(objectclass=user)";
try
{
    searcher.FindOne();
    return true;
}

它在我的本地主机上运行良好,但是当我将它部署到 Intranet 时,我无法登录。

现在我的问题是,我可以通过 Intranet 访问目录吗?还是有更好的方法来实现这一目标?

4

2 回答 2

1

一个更简单的方法是使用System.DirectoryServicesSystem.DirectoryServices.AccountManagement

在返回布尔值的函数中使用它:

Dim context As PrincipalContext = New PrincipalContext(ContextType.Domain, domainName)
If context.ValidateCredentials(userAlias, userPassword, ContextOptions.Negotiate) Then
    Return True
Else
    Return False
End If

该片段是在 VB 中,但你明白了。将domainName替换为您的域名,将 userAlias 替换为您的用户名,将userPassword替换为您的密码。

于 2013-07-18T06:23:57.677 回答
0

这在过去对我很有用:

var ldapConnectionString = "LDAP://servername/CN=Users,DC=domainname,DC=com";

using (var de = new DirectoryEntry(ldapConnectionString, username, password, AuthenticationTypes.Secure))
{
    if(de.NativeObject != null)
    {
        // user is valid ...
    }
}

您需要参考:System.DirectoryServices

于 2013-07-18T05:59:48.287 回答