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
):
根据您的错误,出现了一个问题,您使用了
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
?