我怎么知道新生成的密码

时间:2009-02-11 22:31:37

标签: asp.net

尝试实现asp.net密码恢复控制。

我希望在发送给用户之前捕获新生成的密码,并为其添加一些自定义逻辑然后发送邮件。只有一个事件发送邮件事件。

我怎样才能抓住它?

4 个答案:

答案 0 :(得分: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);

    }

}

答案 1 :(得分:1)

当调用成员资格提供程序的CreateUser方法,ChangePassword方法或ResetPassword方法时,将引发ValidatingPassword事件。

答案 2 :(得分:0)

您想要实施什么“自定义逻辑”?

如果您想修改发送的电子邮件,那么可以选择加入控件上的SendingMail事件。

  

使用此事件在发送电子邮件之前执行所需的任何特殊处理,例如设置MailMessage属性。

这将允许您访问MailDefinition对象,使您能够提供不同的正文副本等.MailDefinition文档列出了将要发生的替换(这也可以以声明方式创建):

<asp:PasswordRecovery ID="PasswordRecovery1" Runat="server" 
  SubmitButtonText="Get Password" SubmitButtonType="Link">
  <MailDefinition From="administrator@Contoso.com" 
    Subject="Your new password"
    BodyFileName="PasswordMail.txt" />
</asp:PasswordRecovery>

新密码将在此阶段存储在数据库中,因此您可以在发送电子邮件之前在此事件中对其进行修改 - 您尝试过吗?

答案 3 :(得分:0)

您是否计划在某处存储生成的密码,因为您的问题的措辞表明您希望能够阅读并使用它做某事?