簡體   English   中英

BCrypt錯誤非法arguments:字符串,object

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM