Невозможно хешировать пароль с помощью bcrypt - PullRequest
0 голосов
/ 24 февраля 2019

Я пытался реализовать bcrypt внутри моего пользователя, чтобы я мог использовать JWT для аутентификации;однако всякий раз, когда я пытаюсь хешировать свой пароль с помощью bcrypt, он выдает ошибку в первом операторе if.Я использую express.js в качестве моей платформы.Я также должен отметить, что я не использую базу данных, и пользователь хранится в массиве в другом файле.Я новичок в узле и все еще пытаюсь понять его.

Мои маршруты пользователя

const express = require('express');
const router = express.Router();
const users = require('../../Users');
const bcrypt = require('bcrypt');

router.post('/signup', (req, res, next) => {
    bcrypt.hash(req.body.password, 10, (err, hash) => {
        if (err) {
            return res.status(500).json({
                error: err
            });
        } else {
            const user = {
                id: users.length + 1,
                userName: req.body.userName,
                email: req.body.email,
                password: hash,
                firstName: req.body.firstName,
                lastName: req.body.lastName,
            }
            user
                .then(result => {
                    console.log(result)
                    res.status(201).json({
                        message: 'User created'
                    })
                })
                .catch(err => {
                    console.log(err);
                    res.status(500).json({
                        error: err
                    });
                })
        }
    })
})

Запрос клиента

{
    "email": "test@test.com",
    "password": "testerpassword",
    "userName": "test",
    "firstName": "teste",
    "lastName": "tester"
}

1 Ответ

0 голосов
/ 24 февраля 2019

Создайте вспомогательный метод, который принимает пароль и возвращает его в зашифрованном виде:

const crypto = require("crypto");
const hashThePassword = (str) => {
  if (typeof str == "string" && str.length > 0) {
    const hash = crypto
      .createHmac("sha256", config.hashingSecret)
      .update(str)
      .digest("hex");
    return hash;
  } else {
    return false;
  }
};

Объект конфигурации содержит произвольную секретную строку.

...