【问题标题】: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 );
});

有人可以帮我吗?

【问题讨论】:

    标签: mongodb mongoose passport.js


    【解决方案1】:

    这就是 serializeUserdeserializeUser 的用途。

    这两个功能是相反的!

    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 或所有用户对象,这是真的吗?)非常感谢))
    猜你喜欢
    • 2017-05-12
    • 2012-12-27
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    相关资源
    最近更新 更多