2011-09-05 91 views
1

ResetPassword方法能夠重置舊密碼,但用戶無法使用由ResetPassword方法生成的新密碼登錄。代碼:ASP.NET 4.0中的ResetPassword方法

String user =(((TextBox)PasswordRecovery2.Controls[0].FindControl("UserName")).Text).ToString(); 
String newPassword = clsStatic.RandomString(10, false); 
MembershipUser username = Membership.GetUser(user); 
String resetPassword = username.ResetPassword(); 
username.ChangePassword(resetPassword, newPassword); 
+0

也許在你所有的測試中你鎖定了用戶並且沒有意識到。檢查用戶是否沒有在成員資格表中設置IsLockedOut位。 – Jeroen

+0

先生我已經檢查過,爲了檢查目的,我使用了額外的代碼if(username.IsLockedOut == true) { username.UnlockUser(); } 我alrely檢查數據庫也,,,根據我的每一件事,一切都很好,但它仍然不是通過一個新的生成的密碼登錄,但感謝你的幫助......如果你有代碼或新的邏輯然後plz告訴我... – Rahul

+0

親愛的jeroen我等待你的答覆很長一段時間我的問題,你有任何想法,如何解決這個問題。 – Rahul

回答

1

ChangePassword返回true或false?

我打賭你的隨機函數返回的密碼不符合web.config成員資格部分中指定的條件。

由於ResetPassword已經給你一個新的有效密碼,你爲什麼必須生成另一個密碼?

+0

1)我試過這個東西也只是使用重置密碼的方法進行重置和生成一個新的密碼,但它仍然不工作。它會給一個新的密碼,但當我們嘗試通過一個新的生成的密碼登錄,然後程序確實允許我...如果你有代碼然後把它給我,我從這個問題的最後7天捱打,,,謝謝。 – Rahul

+0

更改密碼返回True .... – Rahul

0

你的新的隨機密碼生成應該是最好的這些

// this will automatically take care of all password criteria 
string newPassword = Membership.GeneratePassword(10, 0); 

或者

//for generating alpha numeric password only 
string newPwd = Guid.NewGuid().ToString().Substring(0, 11).Replace("-", ""); 

你的代碼是正確的,否則一個。

+0

親愛的我已經嘗試過這個東西,但它仍然允許我通過新生成的密碼登錄,,,,我已經以hased形式保存了我的密碼... – Rahul

+0

您正在重置密碼導致你的retrievepassword = false的權利?你能否粘貼你的web.config會員供應商,以便我們可以看到你的密碼有哪些批評? – naveen

+0

enablePasswordRetrieval = 「假」 enablePasswordReset設置= 「真」 requiresQuestionAndAnswer = 「假」 requiresUniqueEmail = 「真」 maxInvalidPasswordAttempts = 「5000」 minRequiredPasswordLength = 「6」 minRequiredNonalphanumericCharacters = 「0」 passwordAttemptWindow = 「100」 的applicationName =「/」/> – Rahul