我正在使用FormsAuthentication和AdMembership proivder進行asp.net。在下次登錄時更改密碼以使用AdMembership提供者進行表單登錄
我不得不手動編寫「在下次登錄時更改密碼」屏幕,因爲它在提供程序中不受支持。
我打電話:
if (Membership.Provider.ChangePassword(cpCv.LoginName, cpCv.OldPassword, cpCv.NewPassword))
來驗證用戶並更改密碼(但不清除「在下次登錄標誌」)
但總是失敗, (我假設becasue會員驗證當設置「下一次登錄時更改密碼」標誌失敗。)
驗證用戶的最簡單方法是什麼,所以我可以確定在重置密碼和清除密碼之前「舊密碼」和「用戶名」匹配「下一次登錄」標誌?
我已經得到了resetpassword和清除標誌的東西工作,這是驗證,讓我卡住了。
也試過這個代碼,如果復位標誌是假的,它記錄的,如果是真的失敗登錄。
DirectoryEntry de = new DirectoryEntry(path, "jcsn\\"+AdUserName, AdPassword);
try
{
//Bind to the native AdsObject to force authentication.
object obj = de.NativeObject;
DirectorySearcher search = new DirectorySearcher(de);
search.Filter = "(SAMAccountName=" + AdUserName + ")";
search.PropertiesToLoad.Add("cn");
SearchResult result = search.FindOne();
if (null == result)
{
return false;
}
}
catch (Exception ex)
{
throw new Exception("Error authenticating user. " + ex.Message);
}
感謝,
Eric-
我真的沒有解決您的問題的方法,但請查看System.DirectoryServices.AccountManagement命名空間,它可能允許您減少代碼量並可能爲您解決問題。 – 2011-04-07 20:47:10
謝謝!我剛剛發佈了另一個問題,因爲我嘗試使用該名稱空間並卡住了身份驗證。我正在跳轉,它會幫助它,因爲它很容易清除標誌,然後重置它。 – 2011-04-07 20:50:32