繁体   English   中英

密码值返回未定义,但是当使用console.log显示时,用户可以看到

[英]Password value returns undefined, but when console.log is used to display it, the user can see it

所以我使用 passport.js 作为基本的本地登录策略。

下面的代码是我正在使用的

passport.use(new LocalStrategy({
    usernameField: 'email',
    passwordField: 'password'
  },
  function(username, password, cb) {
    'use strict';    
    UserModel.findOne({
      email: username
    }).populate('organisation').exec(function(err, user) {
      if (err) {
        return cb(err);
      }

      console.log( user );

      if (!user) {
        return cb(null, false, {
          message: 'Incorrect email.'
        });
      }

      console.log( user );
      console.log( user.password );

      if (!bcrypt.compareSync(password, user.password) /* true */ ) {
        console.log('password incorrect');
        return cb(null, false, {
          message: 'Incorrect passowrd.'
        });
      }

      return cb(null, user);
    });
  }));

现在console.log(user)显示以下内容(已编辑以保存信息)

{ _id: 5d9c8c4ac50eb00cf494bf8d,
  date: 2019-10-08T13:16:58.037Z,
  forename: 'forename',
  surname: 'surname',
  email: 'test@example.com',
  password:
   '$2a$10$ZUtnlBtXsnvw5k517LRYhORPwG.U.2TzCsIwpzM46jLPpMX4iFf4K',
  organisation: null,
  __v: 0 }

然而, console.log( user.password )返回未定义,我真的很困惑为什么!

Mongoose/MongoDB 结果字段在 Javascript 中出现未定义

发现上述工作user.toObject();

但是我最初不必这样做,它只是起作用,所以不确定发生了什么。

我现在必须调用toObject()是否有一些特定的原因可以帮助指出?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM