Так что я столкнулся с проблемой аутентификации с использованием локальной стратегии. Если я передаю недопустимые учетные данные или что-то неуспешное, я получаю соответствующую ошибку. Однако, если аутентификация прошла успешно, я получаю ошибку 404.NodeJS, Passport & Passport-Local
Я вырыл, и лучшая идея, с которой я столкнулся, - это удаление хранилища сеансов (которое, как представляется, происходит при сериализации пользователя). Кто-нибудь сталкивается с такой проблемой?
Вот некоторые из кода, если вам нужны какие-либо другие разделы кода, сообщите мне, я с радостью предоставил его.
Моя конфигурация паспорта:
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')();
};
Моя Локальная конфигурация Стратегия:
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);
});
}));
};
Все другие методы работы, я могу запросить БД, чтобы найти пользователя, я прошел через соответствуя хэш пароля с предоставленным паролем, все это, кажется, происходит нормально, и я получаю пользователя в конце LocalStrategy (я делаю это до окончательного done(null, user)
. В done(null, user.id)
что-то происходит. Я пробовал переходить через i t, но то, что я получаю, кажется довольно запутанным (или я слишком глупым, чтобы понять это), поэтому я не могу сказать, что происходит на самом деле.
Это звучит как призыв к 'passport.authentic ate() 'может быть неправильно настроен. Можете ли вы показать, как вы это используете? – robertklep
Я ничего особенного не делает: 'app.route ('/ Войти') \t \t .post (passport.authenticate ('местный'));' мне не нужно делать какие-либо перенаправление или что-то еще, мне просто нужно вернуть объект пользователя обратно в интерфейс. Одна вещь, которая может быть полностью совпадением, недавно вызвала функцию crypto 'pbkdf2Sync' узла, чтобы жаловаться на то, что вызов ее без дайджеста был устаревшим, поэтому я добавил это, и теперь я сталкиваюсь с этим. - только что проверил это, все равно получите то же самое ... –