首页 > 解决方案 > BCrypt错误非法参数:字符串,对象

问题描述

我正在开发一个基于 NodeJS 和 ReactJS 的 Web 应用程序,我在其中尝试在多个路由中对密码进行哈希处理,一个用于注册,另一个用于更改密码。

为此,我在两条路线之外生成盐,因此它们都使用相同的盐,如下所示:

const salt = bcrypt.genSalt(10);

现在在路线内部,has 正在生成,如下所示:

user.password = await bcrypt.hash(newPassword, salt);

但是当我运行它时,它会出现以下控制台错误:

非法参数:字符串、对象

当我在各个路由中生成盐时,散列操作工作正常。可能是什么原因?

标签: node.jsauthenticationbcrypt

解决方案


以防其他人遇到这种情况。

不要忘记像这样等待 genSalt 函数:

const salt = await bcrypt.genSalt(10);

错误:Illegal arguments: string, object试图解释传递给哈希函数的参数之一无效,因为它的类型无效。

在这种情况下,它是第二个参数(盐),它需要一个字符串/数字,但接收一个对象(如果你不这样做,则返回的承诺对象await

希望有帮助


推荐阅读