2017-02-17 2 views
0

Ich implementiere eine Reset-Passwort-Funktion für Benutzer meiner Website. Sobald sich ein verifizierter, gut definierter Benutzer anmeldet, wird (speziell für diesen Fall) ein eindeutiges Token generiert, in der Datenbank gespeichert und als Parameter in den Querystring des Links eingefügt, der in der "Passwort vergessen" -E-Mail enthalten ist . Der Benutzer überprüft dann seine E-Mail, klickt auf den Link und wird zu einer Ansicht umgeleitet, wo er sein Passwort neu definieren kann.Parameter von Zurücksetzen Password Link (Express)

Das Haupthindernis, mit dem ich mich in diesem Prozess befasse, ist, das einzigartige Token als Parameter vom Link zu erhalten, wenn der Benutzer auf diesen Link in seiner E-Mail klickt. I verweisen die official Express documentation und spezifizierte die Route (die in der E-Mail aktiviert wird, wenn der Benutzer auf sie in ihrem Posteingang klickt auf einen Blick zu gehen, um ihr Passwort zurücksetzen) und schrieb den folgenden Weg, es zu handhaben:

usersRouter.route('/reset/passwordLoggedOut/:token') 
    .get(emails.resetPasswordForgot); 

mit der anschließenden resetPasswordForgot() Funktion (für Ihren Sehkomfort minimierte):

function resetPasswordForgot(req, res){ 
    const token = req.params.token; 
    console.log(token); 
    res.send(200); 
} 

console.log (Token) zeigt sich derzeit null, wenn ich es erwarten, dass das Benutzerpasswort-Token enthalten.

Einige weitere Hintergrundinformationen, Ich benutze SendGrid für alle meine automatisierten E-Mails, Mailinator zum Testen der E-Mails als Benutzer, und hier ist, wie die Route aussieht, wenn ich über den Link in der E-Mail schweben. (Ich weiß, dass das Bild klein ist und wahrscheinlich unmöglich, ohne Zoomen mehrmals zu sehen, aber ich wollte so viel von der URL wie möglich enthalten)

enter image description here

Bitte lassen Sie mich wissen, was ich tun muss um den Token-Parameter von dem Link in der E-Mail zu erhalten.

Antwort

0

Sie benötigen Zugriff durch das query Attribut:

function resetPasswordForgot(req, res){ 
    const token = req.query.token; 
    console.log(token); 
    res.send(200); 
} 
+0

req.query.token Ausbeuten undefiniert und req.query ist ein leeres Objekt. Nach weiterer Überprüfung glaube ich, dass entweder a.) Der Querystring nicht richtig übergeben wird oder b.) SendGrid ändert den Link so, dass der Zugriff auf den Parameter nicht korrekt erfolgt. –

Verwandte Themen