我目前正在使用 expressJS 開發用戶身份驗證系統。因此,為了加密我的資料,我使用了 bcrypt。然后我將加密的資料保存到 MySQL 資料庫中。然后在登錄時,我使用SELECT password FROM USERS WHERE email=${emailUserEntered}. 很好,但它給了我這個輸出:
[
{
password: '$2b$10$MyvQenconTHygpwbY/1ExampleHashYju2i8Bq'
}
]
我的代碼:
let userPassword = await db.promise().query(`SELECT password FROM USERS WHERE email='${req.body.email}';`);
const data = userPassword[0].password;
console.log(data)
var result = bcrypt.compareSync(req.body.password, data);
if (result) {
res.send('SUCCESS!');
} else {
res.send('WRONG!');
}
如何只能將實際哈希作為字串而不是括號等等?
提前謝謝,祝你有美好的一天
uj5u.com熱心網友回復:
我懷疑您的圖書館query()可能正在回傳一個[rows, fields]陣列。
mysql2是的query(),至少。
也許下面?:
let [rows, fields] = await db.promise().query(`SELECT password FROM USERS WHERE email='${req.body.email}';`);
const password = rows[0].password;
console.log(password)
警告:此外,上述代碼可能會導致可怕的SQL 注入,具體取決于req.body.email. 請查看準備好的宣告以減輕這種情況。更多資訊:準備好的陳述句如何防止 SQL 注入攻擊?.
uj5u.com熱心網友回復:
我猜你正在使用 JavaScript,所以你可以做類似的事情
const {password} = JSON.parse(JSON.stringify(SQL_QUERY_RES).then(items=>items[0])
或者
const data = JSON.parse(JSON.stringify(SQL_QUERY_RES))[0].password
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497762.html
標籤:javascript mysql 数组 javascript 对象 bcrypt
上一篇:操作嵌套的物件陣列以訪問子值
