我正在尝试使用护照js进行本地身份验证并在express中进行分隔。我遇到的问题是成功回调永远不会在成功身份验证时触发。日志显示已找到用户,但用户对象从未登录到请求回调中,也未触发res.send。
路线和策略
goodmorning etcetera longer sentence
应用日志
passport.use(
'local',
new LocalStrategy(
{
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true,
},
(req, email, password, done) => {
// find user
User.findOne({ where: { email } }).then(user => {
if (!user) {
return done(null, false);
}
if (password !== user.password) {
return done(null, false);
}
console.log('user found!');
return done(null, user);
});
},
),
);
app.use(passport.initialize());
// routes
app.post(
'/login',
passport.authenticate('local'),
(req, res) => {
console.log(req.user);
res.send('logged in');
// const expiresIn = 60 * 60 * 24 * 180; // 180 days
// const token = jwt.sign(req.user, config.auth.jwt.secret, { expiresIn });
// res.cookie('id_token', token, { maxAge: 1000 * expiresIn, httpOnly: true });
},
);
答案 0 :(得分:1)
我解决了这个问题。再次运行后,我收到错误Error: Failed to serialize user into session
。在this question之后,我添加了以下代码来对用户进行序列化和反序列化并解决问题。
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});