如何从护照中的用户对象中删除密码字段
Posted
技术标签:
【中文标题】如何从护照中的用户对象中删除密码字段【英文标题】:how to delete password field from user object in passport 【发布时间】:2017-11-03 20:49:56 【问题描述】:我需要通过Passport JS与用户对象创建会话,但在代码的这一部分中,我只能添加所有用户对象,或者用户.ID:
passport.serializeUser(function(user, done)
done(null, **user.id or user** );
);
我的对象: var userSchema = mongoose.Schema( 当地的: 电子邮件:字符串, 密码:字符串, , );
passport.serializeUser(function(user, done)
//Also i tried to delete object field here
//( delete user.local.password ) ,
//but it didn't help
done(null, user.id );
);
有人可以帮我吗?
【问题讨论】:
【参考方案1】:这就是 serializeUser
和 deserializeUser
的用途。
这两个功能是相反的!
serializeUser
你应该把user.id
放在会话中,deserializeUser
是获取整个用户数据。 (例如来自数据库)。
见:
passport.serializeUser(function (user, cb)
cb(null, user.id)
)
passport.deserializeUser(function (id, cb)
// here you can find by Id, or do any query you want.
User.findById(id, function(err, user)
// here you can change to user object (removing the password), before pass it the cb function
cb(err, user);
)
)
希望对你有帮助!
【讨论】:
你真的帮了我)现在,我明白了 serializeUser 和 deserializeUser 之间的区别)我们可以使用 req.user 中的 deserializeUser 获取数据)使用存储在 req.session 中的 serializeUser 数据。我们可以在 req.session 中仅添加 user.id 或所有用户对象,这是真的吗?)非常感谢))以上是关于如何从护照中的用户对象中删除密码字段的主要内容,如果未能解决你的问题,请参考以下文章