标题是自我解释的。我检查了一切,发送到服务器进行注册的密码和发送到服务器进行身份验证的密码是一样的。我甚至在哈希注册后立即尝试使用bcrypt.compare
,并返回true
。但每次我使用bcrypt.compare
进行身份验证时,都会返回false
。是的,我已经检查过,而且我总能找到合适的帐户。
app.post('/api/accounts/register', function(req, res, next) {
bcrypt.hash(req.body.password, 10, function(err, hash) {
let newAccount = Account.model({
name: req.body.name,
email: req.body.email,
password: hash,
gender: req.body.gender,
address: req.body.address,
phone: req.body.phone
});
newAccount.save(err => {
if (err) {
res.status(500);
}
res.json({
account: getCleanUser(newAccount),
token: generateToken(newAccount)
});
});
})
});
app.post('/api/login', function(req, res, next) {
Account.model.findOne({ email: req.body.email })
.exec((err, account) => {
console.log(account);
if (err) return res.status(500);
if (!account) {
return res.status(404).json({
error: true
});
}
bcrypt.compare(req.body.password, account.password, (err, valid) => {
if (!valid) {
return res.status(404).json({
error: true
});
}
let token = generateToken(account);
res.json({
account: getCleanUser(account),
token: token
});
});
});
});