Ich habe eine lokale Passport-JS-Registrierungsstrategie, die die Methoden successRedirect und failureRedirect verwendet. Das Problem besteht darin, dass Passport bei einem Anmeldefehler einfach zurück zum Anmeldeformular umleitet, ohne dass Daten im Formular enthalten sind.Senden von Daten mit der Passport-Methode js failureRedirect
app.post('/signup', passport.authenticate('local-signup', {
successRedirect: '/signup/avatar', // redirect to the secure profile section
failureRedirect: '/signup', // redirect back to the signup page if there is an error
failureFlash: true // allow flash messages
}));
Ich habe die folgende Bedingung in meinem lokalen Anmeldestrategie, die eine Fehlermeldung an den Benutzer senden, wenn die beiden mitgelieferten Passwörter nicht übereinstimmen.
if(req.body.password != req.body.confirm_password){
console.log('Passwords do not match');
return done(null, false, req.flash('signupMessage', 'Your passwords do not match'));
}
Zusammen mit der Flash-Mitteilung, ich möchte Daten an dem/Anmeldungen Weg zurück zu senden und wieder füllen Sie das Formular mit den Daten der Nutzer zur Verfügung gestellt haben.
Gibt es eine Möglichkeit, die Formulardaten bei einem Fehler an den Browser zurückzusenden?
Warum wollen Sie die Daten erneut senden (das heißt die Fehlermeldung), wenn Sie bereits die 'req.flash' Instanz bevölkern? Sie müssen nur auf den 'req.flash'-Inhalt verweisen, den Sie für Ihre Ansicht verwenden. – Ben
Die Flash-Nachricht funktioniert. Das Problem ist, dass der Benutzer das ganze Formular erneut ausfüllen muss, nur weil sie eine falsche Eingabe erhalten haben. Ich möchte die Daten an die Ansicht zurücksenden, damit ich das Formular mit allen von ihnen gesendeten Daten ausfüllen kann, abzüglich des Teils, der falsch war. – Tom
Bitte überprüfen Sie meine Antwort in unten stehenden Link. Hoffe das wird helfen. http://stackoverflow.com/questions/13598837/node-js-express-form-clears-on-submission/39632406#39632406 – kanna