Локальная стратегия Passport js не вызывается

это мой app.js

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const cors = require('cors');
const passport = require('passport');

const app = express();

app.use(cors());

//Mongodb connection
mongoose.connect("mongodb://localhost/expressWithAngular")
.then(() => {
    console.info("mongodb connected");
})

//bodyparser middleware 
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());


//load routes
const users = require("./routes/users");

//include passport
require("./config/passport")(passport);



// use routes
app.use('/user' , users);



app.get('' ,(req,res) => {
    res.send('home');
})

const port = 5000;
app.listen(port   , () => {
    console.info(`server is running in port ${port}`);
})

это мои пользовательские маршруты routes / user.js

const express = require('express');
const mongoose = require('mongoose');
const router = express.Router();
const bcrypt = require('bcryptjs');
const passport = require('passport');


//user model init
require('./../models/User');
const User = mongoose.model('users');

router.post('/login' , (req,res,next)=>{
    console.info("bodyparser" ,req.body);
    passport.authenticate('local',{
        session: false
    },function(req,res,next){
        console.info(res);
    })
})

module.exports = маршрутизатор;

это мой config / паспорт.js

const LocalStrategy = require('passport-local').Strategy;
const mongoose = require('mongoose');
const bcrypt = require('bcryptjs');

const User = mongoose.model('users');

module.exports = function(passport){
    passport.use(new LocalStrategy(
        {
            usernameField : 'email'
        },
       function(email,password,done){
           console.info(email);
       }
    ))
}

- я пытался связать свое приложение среднего стека с паспортом аутентификация, я могу отправить детали на бэкэнд, но не смог передать ценность местной стратегии - Я не знаю, где мне не хватает, когда я утешал локальную стратегию не звонил, пожалуйста, поправьте меня, где меня не хватает

Стоит ли изучать 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
0
522
1

Ответы 1

Я считаю, что у вас проблема с настройкой роутера. passport.authenticate - это создание промежуточного программного обеспечения для вас, но в вашем случае вы обернули его функцией, чтобы вы могли регистрировать входные параметры, и вы не вернули сгенерированное промежуточное ПО на маршрутизатор:

router.post('/login' , (req,res,next)=>{
  console.info("bodyparser" ,req.body);
  passport.authenticate('local',{
    session: false
  },function(req,res,next){
    console.info(res);
  })
})

Я бы посоветовал вам изменить свой код, чтобы он работал, как в примере в официальной документации:

router.post('/login' , passport.authenticate('local',{
        session: false
    });
)

Если вам действительно нужно регистрировать req.body, просто добавьте промежуточное ПО перед аутентификацией, например:

router.post('/login' , (req, res, next) {
      console.info("bodyparser" ,req.body);
      next();
    },
    passport.authenticate('local', {session: false});
)

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