我有express
个应用,我正在尝试使用passport-local
进行身份验证。这是我的express
应用:
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
网址,json
我的身体{username: 'jason@gmail.com', password: 'password
}。LocalStrategy
}。我浏览了done
函数,然后在序列化函数中,它进入http
函数,然后挂起。我没有错误或额外的日志记录,连接只是保持打开状态,控制权不会返回给调用者。我从未收到session
状态,只是挂起。
我认为这是{{1}}的问题,但我不明白接下来要做什么?
答案 0 :(得分:1)
好的,你可以尝试重定向吗?看起来你的session / auth是好的,如果你在那时得到一个合适的用户名。
app.post('/login', passport.authenticate('local', {
successRedirect: '/somewhere_intern',
failureRedirect: '/login'
}));