5
Używam LocalStrategy z MySQL (z sequelize), który pracuje z wyjątkiem gdy MYSQL wyrzuca wyjątek (tylko do testowania, ja zamknąć serwer MySQL). Serwer powodujący zawieszenie wywołań wyjątku return done(error)
.passportjs błąd zwrotna rzuca wyjątek
Oto mój kawałek kodu:
passport.use(new LocalStrategy({usernameField: 'email', passwordField: 'password'},
function (email, password, done) {
db.User.find({where: {email: email}}).done(function (error, user) {
if(error) return done(error);
if (!user) return done(null, false, {message: 'unknown user'});
//validate password
if (user.password != password) {
return done(null, false, {message: 'invalid password'});
}
//all ok
return done(null, user);
});
}
));
i wyjątek:
TypeError: Property 'next' of object #<Context> is not a function
at Context.actions.error
Co robię źle? Dzięki!
EDIT:
req._passport.instance.authenticate('local', function (err, user, info) {
if (err) return validator.emit('exception', err);
if (!user) {
validator.result.errors.push('Username and password combination not found.');
validator.emit('response');
} else {
req.login(user, function (error) {
if (error) return validator.emit('exception', error);
validator.emit('response');
});
}
})(req, res);
można pokazać w jaki sposób używasz 'passport.authenticate' w swoich tras? – robertklep
Dodałem 'kod authenticate' – SamSerious
który wygląda raczej hackish i może być przyczyną problemów. Spójrz na [tę stronę] (http://passportjs.org/guide/authenticate/), część o * "Niestandardowe oddzwonienia" *; używa 'paszport.authenticate' zamiast używać' req._passport.instance.authenticate'. – robertklep