BCrypt错误 非法参数:字符串,对象。

问题描述 投票:0回答:1

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

为了这个目的,我在两个路由外生成盐,所以它们都使用相同的盐,就像这样。

const salt = bcrypt.genSalt(10);

现在在路由内部,哈希的生成是这样的。

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

但当我运行这个时,它给出了以下控制台错误:

Illegal arguments: string, object

我在各个路由里面生成盐的时候,哈希操作是正常的。可能是什么原因?

node.js authentication bcrypt
1个回答
0
投票

我猜你是在调用 bcrypt.hash 这样

await bcrypt.hash(newPassword, 10);

这意味着你传递的是回合数,而不是盐。如果你想在调用之外生成盐,你可以做这样的事情。

const salt = bcrypt.genSaltSync(10);

然后用在 bcrypt.hash.

© www.soinside.com 2019 - 2024. All rights reserved.