Не удается хешировать пароль с помощью bcrypt

Я пытался внедрить 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.info(result)
                    res.status(201).json({
                        message: 'User created'
                    })
                })
                .catch(err => {
                    console.info(err);
                    res.status(500).json({
                        error: err
                    });
                })
        }
    })
})

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

{
    "email": "[email protected]",
    "password": "testerpassword",
    "userName": "test",
    "firstName": "teste",
    "lastName": "tester"
}

Любая причина, по которой вы не используете паспорт. было бы лучше/проще использовать паспорт и стратегию, которая все делает за вас.

jcuypers 24.02.2019 12:12

В паспорт не заглядывал, попробую.

razvanusc 24.02.2019 12:13

Решением будет использование проверенного и проверенного фреймворка вместо создания собственного. примеры есть на сайте.

jcuypers 24.02.2019 12:17

@jcuypers Я не думаю, что смогу использовать паспорт, так как не использую базу данных.

razvanusc 24.02.2019 12:48

@razvanusc хорошо, вы не вводите данные для проверки ошибок или ничего. попробуйте заменить req.body.password фиксированным строковым значением и посмотрите, исчезнет ли ошибка или изменится. или просто попробуйте записать значение в консоль, прежде чем пытаться. нам нужно убедиться, что значение определено.

jcuypers 24.02.2019 12:56

Когда я устанавливаю фиксированное значение, это дает мне следующую ошибку: /Users/razvanusc/code/razvanusc/project-tool/routes/api/user‌​s.js:22 .then()

razvanusc 24.02.2019 12:59

Давайте продолжить обсуждение в чате.

jcuypers 24.02.2019 13:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
170
1

Ответы 1

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

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;
  }
};

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

Другие вопросы по теме