bcrypt 加密的坑


const bcrypt = require('bcryptjs') //加密
 
//不存在,則存儲
const newUser = new User({ 
name: ctx.request.body.name,
email: ctx.request.body.email,
password:  ctx.request.body.password
});
 
//加密
await bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(newUser.password, salt, (err, hash) => { //需要加密的東西
if (err) throw err;
newUser.password = hash;
});
});

 

await newUser.save()
.then(success => {
consol.log("注冊成功")
})
.catch(err => {
Console.log(err);
})
 
ctx.body = newUser;
 
需求:接收前端傳過來的post數據,經過加密后存儲到數據庫
 
坑:用bcrypt加密后進行存儲【newUser.save()】,但是存儲數據的密碼還是明文【打印過hash,在加密的函數里是正常的】
 
解決:bcrypt.genSalt()這個方法本身就是異步的,這時候再用await就出問題了。解決方法就是把加密用同步的方法來實現,以及把加密這一塊封裝起來單獨調用就行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM