【发布时间】:2021-09-29 03:57:52
【问题描述】:
我在 React 和 Node js 项目中使用 bcryptjs,但似乎无法让它返回 true。在所有在线验证器上,它使用密码和哈希返回有效。我已经验证了长度是正确的,但无法让它工作。
我的 HandleSubmit 函数:
event.preventDefault();
const self = this;
const data = `username=${encodeURIComponent(this.state['username'])}&`;
axios.post(`/test/do_login/${data}`)
.then(function (response) {
console.log("RESPONSE");
console.log(response);
bcrypt.compare(self.state.password, response.data).then(function (result) {
console.log(`PW: ${self.state.password}\nDATA:${response.data}\nRES:${result}`);
if (result) self.setState({ loginSuccess: true });
});
});
}
在服务器上:
const express = require('express');
const bcrypt = require('bcryptjs');
const router = express.Router();
const regexp = /=(.+?)&/g
router.post('/do_login/:data', (req, res) => {
var con = req.app.get('con');
var args = [...(req.params.data).matchAll(regexp)];
console.log(args);
var username = args[0][1];
query = `SELECT * FROM users WHERE username="${username}";`
con.query(query, (err, result) => {
if (err) throw err;
console.log(result);
if (result.length < 1) res.send("USERNAME_INV")
else {
res.send(String(result[0].pw).slice(0,59));
};
});
});
module.exports = router;
我正在使用 slice 删除数据库条目末尾的 \u000。它存储在 BINARY(60) 中
【问题讨论】:
标签: javascript node.js reactjs hash bcrypt