javascript - 当我在passportJS中反序列化用户时,用户没有通过
问题描述
我有这个问题,当我从与护照 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
解决方案
我能够解决这个问题。我只需要使用req.user
而不是user
推荐阅读
- sql - 加入两个 2 表以获得每年的总和 - SQL Server
- xpath - Orbeon 静态自动完成功能无法按预期工作
- javascript - VM323:1 未捕获的类型错误:无法读取未定义的属性“添加”
- android-studio - 我想在保存笔记的同时播放声音
- angular - 为什么角材料中的对话表现不一致?
- php - 使用 AJAX 进行 jquery 验证后的图像上传
- node.js - Sequelize 作为 express JS 中的函数总是返回 isFulfilled 和 isRejected false
- python - 使用警告上下文管理器特别沉默的 Pandas SettingWithCopyWarning?
- python - 带有运算符的 if 语句中的语法错误
- git - Git rebase:通过运行命令修复