![](/img/trans.png)
[英]Error: Illegal arguments: undefined, string at Object.bcrypt.hashSync in MongoDB
[英]BCrypt error Illegal arguments: string, object
我正在開發一個基於 NodeJS 和 ReactJS 的 web 應用程序,我正在嘗試 hash 多個路徑中的密碼,一個用於注冊,另一個用於更改密碼。
為此,我在兩條路線之外生成鹽,因此它們都使用相同的鹽,如下所示:
const salt = bcrypt.genSalt(10);
現在在路線內部,has 正在生成,如下所示:
user.password = await bcrypt.hash(newPassword, salt);
但是當我運行它時,它會出現以下控制台錯誤:
非法 arguments:字符串,object
當我在各個路由中生成鹽時,散列操作工作正常。 可能是什么原因?
以防其他人遇到這種情況。
不要忘記等待 genSalt function 像這樣:
const salt = await bcrypt.genSalt(10);
The error: Illegal arguments: string, object
tries to explain that one of the arguments passed to the hash function is invalid, since it's type is invalid.
在這種情況下,它是第二個參數(鹽) ,它需要一個字符串/數字,但接收一個 object (如果您不await
,則返回 promise object) 。
希望有幫助
我猜你正在像這樣調用bcrypt.hash
await bcrypt.hash(newPassword, 10);
這意味着您傳遞的輪數,而不是鹽。 如果你想在通話之外生成鹽,你可以做這樣的事情
const salt = bcrypt.genSaltSync(10);
然后在bcrypt.hash
中使用它。
查看文檔,我相信該錯誤是由您的 genSalt() 中缺少的回調 function 引起的。genSaltSync() 在沒有回調的情況下運行良好。
如果它可以幫助那里的任何人,我也有同樣的問題,但我的genSalt
代碼很好。
我的問題是我有一些用戶的密碼未初始化,所以沒有生成鹽,它是bcrypt.compare
function 失敗,因為它試圖與NULL
進行比較
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.