如何从护照中的用户对象中删除密码字段

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】:

这就是 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 或所有用户对象,这是真的吗?)非常感谢))

以上是关于如何从护照中的用户对象中删除密码字段的主要内容,如果未能解决你的问题,请参考以下文章

护照本地猫鼬帐户注册的其他字段?

护照本地猫鼬帐户注册的其他字段?

如果“父”文档没有任何匹配的用户名和密码,则护照匹配子文档中的用户名和密码

DRF SimpleJWT 删除密码并添加日期字段

护照本地猫鼬中的密码验证器选项不起作用

当对象中的字段发生更改时如何从 v-model 数组中删除对象