2
Bcrypt被拋出Incorrect arguments
錯誤,我在user.js
與護照bcrypt誤差和貓鼬
userSchema.methods.comparePassword = (candidatePassword, callback) => {
bcrypt.compare(candidatePassword, this, (err, isMatch) => {
console.log('candidatePassword= ', candidatePassword, '& this= ', this);
if (err) { return callback(err); }
callback(null, isMatch);
});
};
/*
candidatePassword= bird
this= {}
this.password= undefined */
追溯到該函數的用戶對象是回來作爲一個空對象,因此this.password
是未定義的。我假設bcrypt.compare中的this
參數指向userSchema
實例。該userSchema在passport.js
const passport = require('passport');
const ExtractJwt = require('passport-jwt').ExtractJwt;
const JwtStrategy = require('passport-jwt').Strategy;
const LocalStrategy = require('passport-local').Strategy;
const User = require('../models/user');
const config = require('../config');
var localOptions = {
usernameField: 'email',
};
// Verifies user by checking if a password matches the specified email during signin
var localStrategy = new LocalStrategy(localOptions, function (email, password, done) {
User.findOne({ email:email.toLowerCase()}, function (err, user) {
console.log('/passport.js/localStrategy- user object: ', user)
if (err) { return done(err); }
if (!user) { return done(null, false); }
user.comparePassword(password, function (err, isMatch) {
console.log('/passport.js/localStrategy- password: ', password)
if (err) { return done(err); }
if (!isMatch) { return done(err, false); }
return done(null, user);
});
});
});
// ... jwt strategy ...
passport.use(localStrategy);
/*
user object: { _id: 58a1018dc3f89eb5955b8638,
email: '[email protected]',
password: '$2a$10$lAJ9hoGKt9ggfk1TISfkOedxDIs/waLB5e4PccHAKt286XCKCY0/q',
__v: 0 } */
宣佈我不知道什麼相當的問題,因爲它似乎是一個用戶對象返回從MongoDB的加密密碼字段,並user.comparepassword()
叫...
我使用相同的Schema對象也爲用戶簽名。
任何幫助/提示表示讚賞!
你也可能會丟失的序列化和反序列化部分 [結帳這個交代(http://stackoverflow.com/questions/28691215/when-is-the -serialize-and-deserialize-passport-method-called-what-do-it-exact) – Clay
嗨,粘土!在passport.js中,我的代碼拉入用戶對象。 console.log語句中的文本在底部註釋。 由於我在該方法中調用user.comparePassword,我假設可以通過使用'this'作爲參數,通過bcrypt.compareSync在user.js中訪問這些變量。 是否有一個原因,我無法通過對象,一旦我已經成功拉入?謝謝 – Chris