你不需要將密碼直接存儲在資料庫中。你需要存儲密碼的雜湊值,這是從密碼產生的一個字符串,但沒有辦法從雜湊值回推出原始的密碼值。
使用Node,安裝 bcrypt
:
npm install bcrypt
引入它,並設置salt回合值,稍後我們會使用它:
const bcrypt = require('bcrypt')
const saltRounds = 10
創建密碼雜湊值
使用下面的代碼創建密碼雜湊值:
const hash = await bcrypt.hash('PASSWORD', saltRounds)
其中 PASSWORD
是實際的密碼字符串。
如果你更喜歡回調函數的方式:
bcrypt.hash('PASSWORD', saltRounds, (err, hash) => {
})
然後你可以將 hash
值存儲在資料庫中。
驗證密碼雜湊值
要驗證密碼,需要使用 bcrypt.compare()
將其與存儲在資料庫中的雜湊值進行比較:
const result = await bcrypt.compare('PASSWORD', hash)
// result 是 true 或 false
使用回調函數的方式:
bcrypt.compare('somePassword', hash, (err, result) => {
// result 是 true 或 false
})