node.js - 登录后从用户会话中删除密码
问题描述
当用户登录时,我创建一个用户对象并将其存储在会话变量中(我使用的是 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
解决方案
推荐阅读
- python-3.x - 如何在 python 曲线拟合中有效地使用“LMFIT”来拟合阻尼余弦波
- azureservicebus - 如何使用标准 Azure 逻辑应用的无状态工作流可靠地处理 Azure 服务总线消息
- python - “运行时错误:未安装默认上下文。”使用 Tensorflow Federated 时
- go - 使文件不可变 - syscall.Chflags("filename", ?)
- python - 将列中的拆分字符串矢量化为多列 pandas
- javascript - 可以使用 useReducer 重新创建类组件状态行为吗?
- python - 输入类型不支持 ufunc 'isnan'
- node.js - 开玩笑 - 测试成功,即使它不应该成功
- gmail - 样式化电子邮件签名
- javascript - Codepen 代码不适用于我的本地文件——提供的代码