ASP.NET PasswordRecovery Control: Neues Passwort programmatisch auslesen
Das PasswordRecovery Control in ASP.NET ist schön und einfach: Einfach eingebunden, Templates richtig gesetzt sieht es gut aus und ist funktional. Nur die automatisch verschickten E-Mails sehe nicht wirklich ansehnlich aus:
Kehren Sie zu der Site zurück, und melden Sie sich mit den folgenden Informationen an.
Benutzername: …
Kennwort: …
Selbstverständlich kann man auch Mail Templates angeben, aber unverständlicherweise nur als Text-Dateien. Wer also die Templates in Ressourcen Dateien oder in der Datenbank hat, ist aufgeschmissen. Auch wer Probleme mit dem Versand von Mails über den Standardversand von ASP.NET hat (meist, wenn SSL im Spiel ist), stößt vor Probleme.
Eigentlich gibt es dafür das SendingMail Event, bei dem man die Mail noch anpassen kann, bevor sie verschickt wird. Schön und gut, aber wie kommt man an das neue Passwort? Vom Control wird es nicht bereitgestellt, aus der Datenbank kann es nicht ausgelesen werden, wann die Passwörter gehasht sind und wenn man den Mailtext ändert, wird es im Nachhinein auch nicht mehr ersetzt.
Hier gibt es jetzt zwei Lösungen (die erste Quick&Dirty und die zweite etwas aufwändiger):
Im SendingMail Event ist in den MailMessageEventArgs die Mail enthalten, die automatisch verschickt werden würde. Hier kann man einfach das neue Passwort per RegEx o.ä. abgreifen. (e.Message.Body ist der Mailtext). Dies ist natürlich schwieriger, wenn man multi-lingual arbeitet, aber immer noch möglich.
Quick&Dirty: Aus Mail extrahieren
Aufwändiger: Neues Passwort erstellen
Eine aufwändigere Möglichkeit ist, das neue Passwort gleich wieder durch ein neues ersetzen zu lassen. Hierzu kann ResetPassword() für den User aufgerufen werden, für den das neue Passwort erstellt werden soll.
Einen Kommentar hinterlassen