繁体   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