![](/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.