Javascript 我无法序列化用户,我没有';我不明白发生了什么事
当我尝试登录我的网页时,我发现了那个错误,我在stackoverflow和internet上搜索那个错误,但我无法解决那个错误。 我有一些问题吗 1:当我尝试记录“用户”数据时。但是它不会返回用户obj,而是返回true。为什么? 2:在serializeUserdone函数中,为什么我们给出参数user.id而不是user.\u id。因为mongodb有\u id字段,而不是id字段 错误: 这是我在终点站没有得到的。 代码段:Javascript 我无法序列化用户,我没有';我不明白发生了什么事,javascript,node.js,express,passport.js,Javascript,Node.js,Express,Passport.js,当我尝试登录我的网页时,我发现了那个错误,我在stackoverflow和internet上搜索那个错误,但我无法解决那个错误。 我有一些问题吗 1:当我尝试记录“用户”数据时。但是它不会返回用户obj,而是返回true。为什么? 2:在serializeUserdone函数中,为什么我们给出参数user.id而不是user.\u id。因为mongodb有\u id字段,而不是id字段 错误: 这是我在终点站没有得到的。 代码段: passport.use(new passportLoca
passport.use(new passportLocal({
usernameField: 'email'
}, (email, password, done) => {
console.log(email, password);
usermodel.findOne({
email: email
}, (err, user_obj) => {
console.log("user object get by database", user_obj)
if (err) throw new Error(err);
if (!user_obj) {
return done(null, false, {
message: "There is no user with that ID."
});
} else if (user_obj) {
console.log(user_obj._id)
bcrypt.compare(password, user_obj.password, (err, varifiedUser) => {
if (err) throw new Error(err);
else if (varifiedUser) {
return done(null, varifiedUser);
} else {
return done(null, false, {
message: "Incorrect password!"
});
}
});
}
});
}));
passport.serializeUser((user, done) => {
console.log("user object serialize", user);
done(null, user._id);
});
passport.deserializeUser((user, done) => {
usermodel.findById(user.id, (err, id) => {
if (!err) {
done(null, user);
} else {
done(err);
}
});
});
router.post("/login", passport.authenticate('local', {
successRedirect: '/auth/quiz',
failureRedirect: '/auth/login'
}));
非常抱歉我的语法不好。bcrypt.compare的第二个参数返回一个布尔值,告诉您密码是否匹配,而不是用户数据 我建议将其重写为删除可选回调时的赋值
const match=bcrypt.compare(密码,用户对象密码);
如果(匹配)返回完成(空,用户_obj);
这将把用户对象传递给serializeUser
回调
serializeUser用于向
req.session.passport
属性添加标识符,以便可以使用任何唯一值。我相信您可以直接访问user.id而不是使用mongoose访问_id。bcrypt.compare的第二个参数返回一个布尔值,告诉您密码是否匹配,而不是用户数据
我建议将其重写为删除可选回调时的赋值
const match=bcrypt.compare(密码,用户对象密码);
如果(匹配)返回完成(空,用户_obj);
这将把用户对象传递给serializeUser
回调
serializeUser用于向req.session.passport
属性添加标识符,以便可以使用任何唯一值。我相信你可以通过mongoose访问user.id而不是_id