【发布时间】:2021-05-06 19:28:38
【问题描述】:
我有这个问题,当我从我的护照 js 会话中反序列化我的用户时,我可以获取用户并将其传递给 passportjs。但是passportjs似乎没有将它传递给我的身份验证码。这是我的反序列化代码
passport.deserializeUser(async function (id, done) {
console.log("Deserializing")
User.findByPk(id).then(function (user) {
console.log("Deserialised user" + user.Username);
done(null, user)
},
function (err) {
console.error(err);
done(err);
}
)
});
这是我的身份验证代码
app.get('/api/loginTest', function (req, res, next) {
passport.authenticate('local',(err, user, info) => {
if (err) {
console.error("ERROR: " + err);
return next(err);
}
if (!user) {
console.error("No User" + user);
return res.send('No User')
}
console.log(user);
return res.send("Logged in");
})(req, res, next);
});
最后但并非最不重要的是运行此代码的控制台输出。
istening at http://localhost:3000
Executing (default): SELECT "id", "Username", "Password", "createdAt", "updatedAt" FROM "Users" AS "User" WHERE "User"."Username" = 'Frederik' LIMIT 1;
Deserializing
Executing (default): SELECT "id", "Username", "Password", "createdAt", "updatedAt" FROM "Users" AS "User" WHERE "User"."id" = 15;
Deserialised userFrederik
No Userfalse
如您所见,让用户进入反序列化功能没有问题。但是,一旦我尝试在身份验证中间件中使用用户。用户只是 NULL
【问题讨论】:
标签: javascript node.js express passport.js