У меня есть приложение express
, которое я пытаюсь выполнить с помощью проверки подлинности с помощью passport-local
. Вот мое express
приложение:Аутентификация экспресс-приложения с паспортом - Expressjs Passportjs
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({ secret: 'this is a string' }));
app.use(passport.initialize());
app.use(passport.session());
client = new pg.Client(connectionString);
client.connect();
passport.use(new LocalStrategy(
function(username, password, done) {
var query = client.query('SELECT * FROM users WHERE EMAIL = $1', [username], function(err, result){
if(err) {
console.log("Error");
return done(err);
}
if(!result.rows.length > 0) {
console.log("No users");
return done(null, false, { message: 'User not found'});
}
if(result.rows[0].password !== password) {
console.log("incorrect password");
return done(null, false, { message: 'Password Incorrect'});
}
console.log('authenticated');
return done(null, result.rows[0]);
});
}
));
passport.serializeUser(function(user, done) {
'use strict';
console.log('serialize');
console.log(user);
done(null, user.email);
});
passport.deserializeUser(function(id, done) {
'use strict';
console.log('deserialize');
User.findById(id, function(err, user) {
done(err, user);
});
});
app.post('/login', passport.authenticate('local'), function(req, res) {
'use strict';
console.log(req.user.username);
});
app.listen(port, function() {
'use strict';
console.log('Listening on:', port);
});
Я тогда попал в /login
URL с этой json
в моем теле: {username: '[email protected]', password: 'password
}. Я прохожу через функцию LocalStrategy
, а затем в функции сериализации она выполняет функцию done
, а затем просто зависает. Я не получаю никаких ошибок или дополнительных протоколов, соединение остается открытым, а управление не возвращается вызывающему. Я никогда не получаю статус http
, он просто зависает.
Я думаю, что это проблема с моим session
, но я не понимаю, что делать дальше?
Короткий вопрос. Получаете ли вы результат на console.log (req.user.username); при открытии yourDomain: порт/логин? – ztirom
Я получаю undefined. – jhamm
Я изменил его на 'console.log (req.user.user_name)', а затем получил имя пользователя. – jhamm