Паспорт js локальная стратегия не вызывается - PullRequest
0 голосов
/ 15 октября 2018

это мои 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.log("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.log(`server is running in port ${port}`);
})

это мои пользовательские маршруты route / 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.log("bodyparser" ,req.body);
    passport.authenticate('local',{
        session: false
    },function(req,res,next){
        console.log(res);
    })
})

module.exports = router;

этомой config / passport.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.log(email);
       }
    ))
}

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

1 Ответ

0 голосов
/ 16 октября 2018

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...