Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Passport.js更改本地策略身份验证的用户对象?_Javascript_Node.js_Passport.js - Fatal编程技术网

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

Javascript 如何从Passport.js更改本地策略身份验证的用户对象?,javascript,node.js,passport.js,Javascript,Node.js,Passport.js,例如,我们得到了: var userSchema = mongoose.Schema({ local: { email: String, password: String } }); 我们需要这样做: var userSchema = mongoose.Schema({ local: { id: String, user: { email: String, password: String } } });

例如,我们得到了:

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

  • routes.js
  • profile.ejs
  • user.js
  • passport.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);
    };
    

    中的第一个未连接到用户模式,因此我认为问题在于第二个函数。您是否更改了那里的变量?

    基于您的错误,出现了一个问题,您使用了
    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);
    };
    

    中的第一个未连接到用户模式,因此我认为问题在于第二个函数。您是否更改了那里的变量?

    您应该
    grep
    查看应用程序目录中所有出现的
    local.email
    ,因为这让我觉得您缺少一些变量。您是否也将
    local.password
    更改为
    local.user.password
    查看所有出现的
    grep
    local.email
    在您的应用程序目录中,因为这让我觉得您缺少了一些。您是否也将
    local.password
    更改为
    local.user.password