首页 > 解决方案 > Node.js - 使用 bcrypt 生成散列密码

问题描述

我正在尝试使用 bcrypt 生成散列密码并将其登录到终端。但是记录的结果与我的预期输出不符

我的控制器功能如下,

const User = require('../models/user');
const { hashedPassword } = require('../lib/passwordHash');

exports.create = (req, res) => {
  const { body } = req;

  console.log('1 Create');

  const { password } = body;
  console.log('2 ', password);

  const newPassword = hashedPassword(password);
  console.log('3 ', newPassword);

  res.send('Create');
};

passwordHash.js 如下,

const bcrypt = require('bcrypt');

const saltRounds = 10;

const hashedPassword = (password) =>
  bcrypt.hash(password, saltRounds, (err, hash) => {
    if (err) {
      return err;
    }
    console.log(hash);
    return hash;
  });

module.exports = {
  hashedPassword
};

输出如下,

1 Create
2  12345
3  undefined
$2b$10$hVQ7J4ratfP7ubgiRzF1WOI7rmYC5WRo4kFh6EbjJtK0qR1gW5nWa

期望输出是,

1 Create
2  12345
$2b$10$hVQ7J4ratfP7ubgiRzF1WOI7rmYC5WRo4kFh6EbjJtK0qR1gW5nWa
3 $2b$10$hVQ7J4ratfP7ubgiRzF1WOI7rmYC5WRo4kFh6EbjJtK0qR1gW5nWa

我知道它是一个异步函数,在所有行执行后运行。但是我怎样才能得到预期的结果。

标签: javascriptnode.jsexpress

解决方案


推荐阅读