当用户登录时,我创建一个用户对象并将其存储在会话变量中(我正在使用express-session)。但是,它还在会话中存储了哈希密码,但我宁愿不这样做。有没有一种方法可以仅从会话中删除密码,或者我必须为要存储在会话中的所有内容创建单独的会话变量?例如:
User.findOne({email: email})
.then(user => {
if (!user) {
return res.status(422).render('auth/login', {
path: '/login',
pageTitle: 'Login',
errorMessage: 'Invalid login details',
email: email
});
}
bcrypt.compare(password, user.password)
.then(doMatch => {
if (doMatch) {
req.session.isLoggedIn = true;
req.session.user = user
return req.session.save((err) => {
res.redirect('/dashboard');
});
}
因此,可能不是我需要的,而是req.session.user = user。
req.session.user.email = user.email
req.session.user.firstName = user.firstName
以此类推。我确实尝试过,但是密码仍然保留在会话中:
req.session.user = { ...user }
delete req.session.user.password