gpt4 book ai didi

express - Passportjs 成功回调从未调用过

转载 作者:行者123 更新时间:2023-12-03 22:19:58 26 4
gpt4 key购买 nike

我正在尝试使用 Passport js 实现本地身份验证并在 express 中进行 sequalize。我遇到的问题是成功回调永远不会在成功认证时触发。日志显示用户已找到,但用户对象从未登录到请求回调中,也未触发 res.send。

路线和策略

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 });
},
);

应用程序日志
 express:router:layer new '/' +0ms
express:router:route new '/login' +1ms
express:router:layer new '/login' +0ms
express:router:route post '/login' +0ms
express:router:layer new '/' +0ms
express:router:route post '/login' +0ms
express:router:layer new '/' +0ms
express:router:route new '/users' +0ms
express:router:layer new '/users' +0ms
express:router:route get '/users' +0ms
express:router:layer new '/' +0ms
express:router:route new '/signup' +0ms
express:router:layer new '/signup' +1ms
express:router:route post '/signup' +0ms
express:router:layer new '/' +0ms
express:router use '/' <anonymous> +0ms
express:router:layer new '/' +0ms
express:router use '/' <anonymous> +0ms
express:router:layer new '/' +0ms
express:router use '/' <anonymous> +0ms
express:router:layer new '/' +0ms
express:application set "port" to '3001' +0ms
Executing (default): SELECT 1+1 AS result
Connection has been established successfully.
express:router dispatching POST /login +4s
express:router query : /login +2ms
express:router expressInit : /login +0ms
express:router favicon : /login +2ms
express:router logger : /login +0ms
express:router jsonParser : /login +2ms
express:router urlencodedParser : /login +28ms
express:router cookieParser : /login +0ms
express:router serveStatic : /login +1ms
express:router initialize : /login +0ms
Executing (default): SELECT "id", "firstName", "lastName", "username", "email", "password", "createdAt", "updatedAt" FROM "users" AS "user" WHERE "user"."email" = 'a' LIMIT 1;
user found!
express:router <anonymous> : /login +25ms
express:router <anonymous> : /login +1ms
express:view require "jade" +0ms
express:view lookup "error.jade" +190ms
express:view stat "/home/zmigaddo/sc/views/error.jade" +0ms
express:view render "/home/zmigaddo/sc/views/error.jade" +1ms
POST /login 500 346.104 ms - 1910

最佳答案

我解决了这个问题。再次运行后,我收到错误 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);
});

关于express - Passportjs 成功回调从未调用过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54283409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com