大家好,
無法驗證哈希密碼
我驗證使用bcrypt模塊我的用戶。
我能夠執行註冊過程,但在登錄過程中遇到問題。
用戶模型:
var userSchema = new Schema({
email: {type: String, required: true},
password: {type: String,
});
散列方法:
userSchema.methods.encryptPassword = function (password) {
return bcrypt.hashSync(password, bcrypt.genSaltSync(5), null)
};
userSchema.methods.validPassword = function (password) {
return bcrypt.compareSync(password, this.password);
};
登錄:
module.exports.login = function (user, callback) {
User.findOne({'email': user.email, 'password': user.validPassword(this.password)}, callback);
};
登錄路由
router.post('/login', function (req, res) {
var user = req.body;
User.login(user, function (err, user) {
if (err) {
throw err;
}
if (!user) {
res.sendStatus(404);
return;
}
res.json(user.id);
});
});
當執行正在此錯誤:類型錯誤:user.validPassword不是一個函數
請幫助。
我不想來處理**登錄** code.Rather我只是想在那裏執行蒙戈查詢條件,檢查結果**登錄**路線。 –
不散列我能夠登錄的用戶。
'module.exports.login =函數(用戶,回調){ User.findOne({ '電子郵件':user.email, '密碼':user.validPassword(此。密碼)},回調); };' –
我認爲這裏最大的區別是通過對密碼進行哈希處理(並使用'bcrypt',其中包括salting),您將刪除在數據庫中查詢特定密碼的功能(一件好事)。 換句話說,'bcrypt'不能告訴你什麼正確的「密碼」(在你的數據庫中)是不知道從數據庫(鹽)的一些信息。 –