我需要驗證密碼對用戶是否正確。驗證密碼是否正確
我有這樣的代碼:
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