我正在开发一个基于NodeJS和ReactJS的Web应用程序,其中我试图在多个路由中对密码进行哈希处理,一个用于注册,另一个用于更改密码。
为了这个目的,我在两个路由外生成盐,所以它们都使用相同的盐,就像这样。
const salt = bcrypt.genSalt(10);
现在在路由内部,哈希的生成是这样的。
user.password = await bcrypt.hash(newPassword, salt);
但当我运行这个时,它给出了以下控制台错误:
Illegal arguments: string, object
我在各个路由里面生成盐的时候,哈希操作是正常的。可能是什么原因?
我猜你是在调用 bcrypt.hash
这样
await bcrypt.hash(newPassword, 10);
这意味着你传递的是回合数,而不是盐。如果你想在调用之外生成盐,你可以做这样的事情。
const salt = bcrypt.genSaltSync(10);
然后用在 bcrypt.hash
.