你不需要將密碼直接存儲在資料庫中。你需要存儲密碼的雜湊值,這是從密碼產生的一個字符串,但沒有辦法從雜湊值回推出原始的密碼值。

使用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
})