So läuft mir ein Problem mit einer lokalen Strategie zu authentifizieren. Wenn ich ungültige An-Meldeinformation oder irgendetwas nicht erfolgreich übergebe, erhalte ich den entsprechenden Fehler. Wenn die Authentifizierung erfolgreich ist, wird jedoch ein Fehler 404 angezeigt.NodeJS, Passport & Passport-Local
Ich habe herum gegraben, und die beste Idee, die ich rannte, war das Fallenlassen des Sitzungsspeichers (wo es scheint, passiert zu sein, beim Serialisieren des Benutzers). Jeder hat ein Problem wie dieses?
Hier ist ein Teil des Codes, wenn Sie andere Abschnitte des Codes benötigen, lassen Sie es mich wissen, ich werde es gerne zur Verfügung stellen.
My Passport-Konfiguration:
var passport = require('passport'),
User = require('mongoose').model('User');
module.exports = function() {
passport.serializeUser(function (user, done) {
done(null, user.id);
});
passport.deserializeUser(function (id, done) {
User.findOne({ _id: id }, '-password -salt -__v', function (err, user) {
done(err, user);
});
});
require('./strategies/local')();
};
My Local Strategie Konfiguration:
var passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
User = require('mongoose').model('User');
module.exports = function() {
passport.use(new LocalStrategy({
usernameField: 'email'
}, function (email, password, done) {
User.findOne({email: email}, function (err, user) {
if (err) {
return done(err);
}
if(!user || !user.active || !user.authenticate(password)) {
return done(null, false, { message: 'Authentication Failed'});
}
return done(null, user);
});
}));
};
Alle anderen Methoden arbeiten, kann ich die DB abfragen, um den Benutzer zu finden, die ich durch Anpassung der Hash-Passwort verstärkt haben Mit dem mitgelieferten Passwort scheint alles in Ordnung zu sein und ich bekomme einen User am Ende der LocalStrategy (ich mache es zum finalen done(null, user)
. In der serializeUser()
done(null, user.id)
passiert etwas. Ich habe versucht durch i zu gehen t, aber was ich am Ende finde, scheint ziemlich verschleiert zu sein (oder ich bin zu dumm, es zu verstehen), also kann ich nicht sagen, was tatsächlich passiert.
Es klingt wie der Aufruf von' passport.authentic ate() 'ist möglicherweise nicht richtig konfiguriert. Können Sie zeigen, wie Sie das verwenden? – robertklep
Ich mache nichts Besonderes gibt: 'app.route ('/ login') \t \t .post (passport.authenticate ('local'));' Ich brauche keine Umleitung zu tun oder irgendetwas, ich brauche es nur, um das Benutzerobjekt zurück zum Frontend zu bringen. Eine Sache, die völlig zufällig sein könnte, vor kurzem die Node-Krypto 'pbkdf2Sync'-Funktion begann zu beschweren, dass der Aufruf ohne einen Digest veraltet war, also habe ich das hinzugefügt, und jetzt bin ich dabei. --edit gerade getestet, immer noch die gleiche Sache ... –