2009-02-11 5 views
2

Essayer de mettre en œuvre le contrôle asp.net passwordrecovery.Comment puis-je connaître le mot de passe nouvellement généré?

Je veux attraper le mot de passe nouvellement généré avant de l'envoyer à l'utilisateur et lui ajouter une logique personnalisée, puis envoyer le courrier. il n'y a qu'un seul événement sendmail événement.

Comment puis-je l'attraper?

Répondre

3

Vous pouvez gérer l'événement SendingMail, générer un nouveau mot de passe à l'aide ResetPassword, puis mettre à jour le corps de l'e-mail avec votre nouveau mot de passe et tout ce que vous vouliez mettre là-dedans.

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, merci. J'ai utilisé comme vous le suggérez. J'ai utilisé mu.ResetPassword(); pour le manipuler. – Jack

1

L'événement ValidatingPassword est déclenché lorsque la méthode CreateUser, la méthode ChangePassword ou la méthode ResetPassword d'un fournisseur d'appartenance est appelée.

+0

Votre citation doit être lue "L'événement ValidatingPassword est déclenché PENDANT la méthode [...] ResetPassword". Il continue "L'événement ValidatingPassword se produit avant l'action demandée et permet à l'utilisateur de continuer ou d'annuler l'action demandée", donc cela se produit AVANT que le nouveau mot de passe ne soit généré. –

+0

Le champ Mot de passe de l'argument d'événement contient le mot de passe nouvellement généré. – alex

0

Quelle "logique personnalisée" voulez-vous implémenter?

Si vous souhaitez modifier l'e-mail qui est envoyé, il est important de se connecter à l'événement SendingMail sur le contrôle.

Utilisez cet événement pour effectuer un traitement spécial avant d'envoyer le message électronique, tel que la définition des propriétés MailMessage.

Cela vous donnera que vous permet d'accéder à l'objet MailDefinition à fournir différents corps du texte, etc. Les documents MailDefinition liste des substitutions qui se produiront aussi bien (cela peut aussi être créé déclarative):

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

Le nouveau mot de passe serait stocké dans la base de données à ce stade, vous pouvez donc le modifier dans cet événement avant d'envoyer l'e-mail - avez-vous essayé?

0

Vous prévoyez stocker quelque part le mot de passe généré, comme le phrasé de vos questions suggère que vous voulez être en mesure de le lire et faire quelque chose avec elle?

+0

ck, je veux le stocker dans une table de base de données pour renvoyer si nécessaire. Parfois, le courrier est indésirable ou ne va pas au client. J'ai besoin de renvoyer à nouveau le courrier – Jack

+0

Cela vous ouvre potentiellement à un problème de sécurité majeur, les mots de passe ne doivent jamais être stockés en texte brut. – cjk

Questions connexes