如何从 Passport.js 更改本地策略身份验证的用户对象

How to change user object for local strategy authentication from Passport.js?

本文关键字:策略 身份验证 对象 用户 Passport js      更新时间:2023-09-26

此处为未修改护照应用程序的示例。

例如,我们得到了这个:

var userSchema = mongoose.Schema({
  local: {
    email: String,
    password: String
  }
});

我们需要这样做:

var userSchema = mongoose.Schema({
  local: {
    id: String,
    user: {
        email: String,
        password: String
    }
  }
});

完成这些更改后,我注册了,然后尝试登录,但收到此错误:

node_modules'bcrypt-nodejs'bCrypt.js:642
throw "Incorrect arguments";

所有条目(如 local.email)在以下文件中重命名为 local.user.email

  1. 路线.js
  2. profile.ejs
  3. 用户.js
  4. 护照.js

根据您的错误,存在一个问题,您使用bcrypt模块,并且在链接的文章中仅使用了两次:

// generating a hash
userSchema.methods.generateHash = function(password) {
    return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);
};
// checking if password is valid
userSchema.methods.validPassword = function(password) {
    return bcrypt.compareSync(password, this.local.password);
};

第一个没有连接到您的用户架构,所以我认为问题是第二个功能。您是否更改了那里的变量?