node.js - BCrypt错误非法参数:字符串,对象
问题描述
我正在开发一个基于 NodeJS 和 ReactJS 的 Web 应用程序,我在其中尝试在多个路由中对密码进行哈希处理,一个用于注册,另一个用于更改密码。
为此,我在两条路线之外生成盐,因此它们都使用相同的盐,如下所示:
const salt = bcrypt.genSalt(10);
现在在路线内部,has 正在生成,如下所示:
user.password = await bcrypt.hash(newPassword, salt);
但是当我运行它时,它会出现以下控制台错误:
非法参数:字符串、对象
当我在各个路由中生成盐时,散列操作工作正常。可能是什么原因?
解决方案
以防其他人遇到这种情况。
不要忘记像这样等待 genSalt 函数:
const salt = await bcrypt.genSalt(10);
错误:Illegal arguments: string, object
试图解释传递给哈希函数的参数之一无效,因为它的类型无效。
在这种情况下,它是第二个参数(盐),它需要一个字符串/数字,但接收一个对象(如果你不这样做,则返回的承诺对象await
)。
希望有帮助
推荐阅读
- c++ - C++ 循环和比较编号变量
- c# - ScrollViewer 将项目滚动到中心
- git - 关于创建自定义子命令的 git 文档在哪里?
- arrays - 用数组填充下拉列表
- middleware - 应用设置和中间件 Core 2.1
- data-binding - 从详细信息页面导航返回的 Nativescript radlistview 崩溃
- json - 解码 JSON 时出错 - keyNotFound(CodingKeys
- r - ggrepel:结合使用 position_dodge 和 geom_label_repel
- actionscript-3 - 上传 Adobe Air APK 300MB
- javascript - 我需要 Loopback 远程方法返回 null