2009-02-11 20 views
2

試圖實施asp.net passwordrecovery控制。我如何知道新生成的密碼

我想在發送給用戶之前捕獲新生成的密碼,並向它添加一些自定義邏輯,然後發送郵件。只有一個事件sendmail事件。

我怎樣才能抓住它?

回答

3

您可以處理SendingMail事件,使用ResetPassword生成新密碼,然後使用新密碼更新電子郵件正文以及其他任何您想要放入的郵件正文。

protected void PasswordRecovery1_SendingMail(object sender, MailMessageEventArgs e) 
{ 
    // grab the user. 
    MembershipUser mu = Membership.GetUser(PasswordRecovery1.UserName); 

    if (mu != null) 
    { 

     // reset the password. 
     string newPass = mu.ResetPassword(); 

     // switch out the body of the email. 
     e.Message.Body = string.Format("New Password: {0}\n", newPass); 

    } 

} 
+0

Scott,謝謝。我用你的建議。我用mu.ResetPassword();爲了處理它。 – Jack 2009-02-12 22:00:44

1

當調用成員資格提供程序的CreateUser方法,ChangePassword方法或ResetPassword方法時引發ValidatingPassword事件。

+0

您的報價應爲「在ResetPassword方法期間引發ValidatingPassword事件」。它繼續「ValidatingPassword事件發生在所請求的操作之前,並且使用戶能夠繼續或取消所請求的操作」,因此在生成新密碼之前會發生這種情況。 – 2009-02-11 22:53:26

+0

事件參數的密碼字段包含新生成的密碼。 – alex 2009-02-12 00:16:24

0

你想實現什麼「定製邏輯」?

如果您想要修改發送的電子郵件,那麼在控件上掛接SendingMail事件是一種可行的方法。

使用此事件可在發送電子郵件消息(如設置MailMessage屬性)之前執行任何特殊處理。

這會給你訪問MailDefinition對象,使您能夠提供不同的正文等。MailDefinition文件清單將發生以及換人(這也可以以聲明方式創建):

<asp:PasswordRecovery ID="PasswordRecovery1" Runat="server" 
    SubmitButtonText="Get Password" SubmitButtonType="Link"> 
    <MailDefinition From="[email protected]" 
    Subject="Your new password" 
    BodyFileName="PasswordMail.txt" /> 
</asp:PasswordRecovery> 

在這個階段,新密碼將被存儲在數據庫中,因此您可以在發送電子郵件之前在此處對其進行修改 - 您嘗試過嗎?

0

你打算在什麼地方存儲所產生的密碼,你的問題的說法暗示你想能夠閱讀它,並用它做什麼?

相關問題