Почему мой пользовательский обратный вызов в Passport JS не работает?

Я пытаюсь заставить пользователя зарегистрироваться на моем веб-сайте и сохранить учетные данные на mongodb.

Это мой файл auth.js, где определен маршрут:

router.post('/signup', (req,res,next) => {
    Passport.authenticate('local-signup', err => {
    if (err) {
        if (err.name === "MongoError" && err.code === 11000) {
            res.status(409).json({
                success: false,
                message: "Unsuccessful",
                errors: {
                    email: "This email is already taken."
                }
            });
        }
        res.status(400).json({
            success: false,
            message: "Unsuccessful",
            errors: {
                unknown: "Could not process for some reason. Contact admin."
            }
        });
    }        
    res.status(200).json({
        success: true,
        message: "Successful",
        errors: {}
    });
}) (res, req, next);
}

Последняя скобка немного запуталась, но поверьте мне, это не синтаксическая ошибка. В этом фрагменте я определил стратегию паспорта:

require ('../Models/Users')
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/onlinestore');
const User = mongoose.model('User');
const PassportLocalStrategy = require('passport-local').Strategy;
const Passport = require('passport');

module.exports = Passport.use(new PassportLocalStrategy({
        usernameField: 'email',
        passwordField: 'password',
        session: false,
        passReqToCallback: true,
    }, (email, password, done) => {              
        let user = new User();
        user.email = email.trim();
        user.password = password.trim();
        user.save(err => {
            if (err) {
                console.info(err);
                return done(err);
            } else {
                console.info("Success");
                return done(null);
            }
        });
    }
));

Маршрут может получить введенный пользователем пароль и пользователя. Когда я нажимаю «Отправить», буквально ничего не происходит; ни сервер, ни клиент ничего не консольют. После небольшой отладки я думаю, что проблема связана с тем, что Passport.Authenticate не вызывается, но я не уверен, почему. При необходимости я могу опубликовать другие фрагменты кода, спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это ОП. Я смог найти решение. 1) В моем файле auth.js

Passport.authenticate('local-signup', err => {

замените local-signup на local так становится:

Passport.authenticate('local', err => {

2) У меня было несколько стратегий Passport, и каждая из них находится в своем собственном файле (одна для входа в систему и одна для регистрации). Чтобы использовать правильный «локальный», я должен импортировать правильный в мой файл auth.js. Достаточно просто, это

const passport = require('../Passport/local-signup');

Для входа в систему это будет другой файл.

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