我需要验证密码对用户是否正确。验证密码是否正确
我有这样的代码:
private bool checkOldPasswordValid(string password, string username)
{
using (DirectoryEntry entry = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"))
{
entry.Username = username;
entry.Password = password;
DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.Filter = "(objectclass=user)";
try
{
searcher.FindOne();
}
catch (Exception ex)
{
return false;
}
return true;
}
}
但随后的目录搜索不与WINNT支持,让我经历了所有的记录中发现另一种方式来循环。
foreach (DirectoryEntry dc in entry.Children)
{
// prints the name
System.Diagnostics.Debug.WriteLine(dc.Name);
}
但这只是得到的名称,并没有验证密码。
请大家帮忙。谢谢
如果域名有时是空白的话会怎么样?会是一个问题吗? – user175084 2010-10-14 15:52:02
域可以是本地计算机名称,也可以是使用AD的域控制器中的域。通常情况下,域不应该是空白的。我从来没有测试过一个空白域,但我想这会导致'try ... catch'扔。也许最好是单元测试,然后尝试每个参数的每个可能的值。 – 2010-10-14 15:55:52
DirectoryEntry entry = new DirectoryEntry(“WinNT://”+ Environment.MachineName,Session [“userName”]。ToString(),password); – user175084 2010-10-14 16:18:33