это мой 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);
}
))
}
- я пытался связать свое приложение среднего стека с паспортом аутентификация, я могу отправить детали на бэкэнд, но не смог передать ценность местной стратегии - Я не знаю, где мне не хватает, когда я утешал локальную стратегию не звонил, пожалуйста, поправьте меня, где меня не хватает





Я считаю, что у вас проблема с настройкой роутера. 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});
)