Node.js 我无法使用passport facebook验证routes express

Node.js 我无法使用passport facebook验证routes express,node.js,authentication,passport.js,vue.js,passport-facebook,Node.js,Authentication,Passport.js,Vue.js,Passport Facebook,大家下午好。 几天前,我尝试使用express和passport facebook验证路线,但没有成功。在客户端上,我使用VueJs。 如果有人能在这个问题上帮助我,我将非常高兴。 我将在下面发布我的代码: express.js 'use strict'; let express = require('express'); let bodyParser = require('body-parser'); let cors = require('cors'); let cookieParser

大家下午好。 几天前,我尝试使用express和passport facebook验证路线,但没有成功。在客户端上,我使用VueJs。 如果有人能在这个问题上帮助我,我将非常高兴。 我将在下面发布我的代码:

express.js
'use strict';

let express = require('express');
let bodyParser = require('body-parser');
let cors = require('cors');

let cookieParser = require('cookie-parser');
let session = require('express-session');
let passport = require('passport');

let load = require('express-load');

module.exports = () => {

  let app = express();
  //configurar a porta em que o express irá rodar
    app.set('port', 3000, "127.0.0.1");

  //configura como os dados são transitados entres servidor e cliente
  app.use(bodyParser.urlencoded({extended: true}));
    app.use(bodyParser.json());
    app.use(require('method-override')());
  app.use('*', cors());

  app.use(cookieParser());
    app.use(session({
        secret: 'ilovenodejs',
        resave: true,
        saveUninitialized: true
    }));
  app.use(passport.initialize());
    app.use(passport.session());

  load('models', {cwd: 'app'})
        .then('controllers')
        .then('routes')
        .into(app);

    return app;
}
文件passport.js

'use strict';

var passport = require('passport');
var FacebookStrategy = require('passport-facebook').Strategy;
var mongoose = require('mongoose');
var configAuth = require('./auth');

module.exports = () => {

  var Usuario = mongoose.model('Usuario');

  passport.use(new FacebookStrategy({
    clientID: configAuth.facebookAuth.clientID,
    clientSecret: configAuth.facebookAuth.clientSecret,
    callbackURL: configAuth.facebookAuth.callbackURL
    },
    function (accessToken, refreshToken, profile, done) {
      //console.log('profile: ', profile);
      process.nextTick(() => {
        Usuario.findOne({'facebook.id': profile.id}, (err, usuario) => {
          if (err) return done(err);
          if (usuario) {
            //console.log('user: ', user);
            return done(null, usuario);
          } else {
            var usuario = new Usuario();
            usuario.facebook.id = profile.id;
            usuario.facebook.token = accessToken;
            usuario.facebook.name = profile.displayName;
            usuario.facebook.email = 'email';

            usuario.save((err) => {
              if (err) throw err;
              return done(null, usuario);
            });
          }
        });
      });
    }
  ));

  passport.serializeUser(function(usuario, done){
    console.log('serialize', usuario._id);
    done(null, usuario._id);
  });

  passport.deserializeUser(function(id, done){
    console.log('deserialize', id);
    Usuario.findById(id).exec()
      .then(function(usuario){
        console.log('deserialize', usuario);
        done(null, usuario);
      });
  });

}
路线护照:

'use strict';

//let cors = require('cors');
let passport = require('passport');

module.exports = (app) => {

  let controller = app.controllers.usuarios;
  let Usuario = app.models.usuario;
  let temp = '';
  let objetoUsuario = {}
  //app.use(cors());

  app.route('/api/usuarios')
    .get(controller.listaUsuarios)
    .post(controller.salvaUsuario);

    app.get('/auth/facebook', passport.authenticate('facebook'),
      function (req, res) { });

    app.get('/auth/facebook/callback',
      passport.authenticate('facebook', { failureRedirect: '/' }),
      function (req, res) {
        temp = req.session.passport;
        console.log(req.session.passport);
        req.session.save(() => {
          req.user = req.session.passport
          res.redirect('http://localhost:8080/#!/home');
        });
      });

    app.get('/v1/success', (req, res) => {
      Usuario.findById(temp.user).exec()
          .then((usuario) => {
            if (!usuario) throw new error('Usuario não encontrado');
            res.json(usuario);
            req.session.passport.user = usuario
          }, (err) => {
            res.status(404).json(err);
          });
      //console.log(req.session.passport);
    });

    app.get('/logout', (req, res) => {
      req.logout();
      res.redirect('http://localhost:8080/#!/home');
    });
}
这部分内容将重定向到我的vuejs客户端

部分身份验证路由:

'use strict';

function verificaAutenticacao(req, res, next){
    console.log(req.user);
    console.log(req.session);
    if(req.isAuthenticated()){
        return next();
    }else{
        res.status('401').json('não autorizado');
    }
};

module.exports = (app) => {

  let controller = app.controllers.viagens;

  app.route('/api/viagens')
    .post(verificaAutenticacao, controller.salvaViagem);
}
日志端口控制台。passeport会话为空,不知道原因

Session {
  cookie: 
   { path: '/',
     _expires: null,
     originalMaxAge: null,
     httpOnly: true },
  passport: {} }
我知道我做错了什么,但不知道这是我的错误。 用户身份验证是正常完成的,如果我执行console.log(req.session.passport),会话中会有用户的id,但是当我去验证session.passport时,这是空的,现在我不知道该怎么办。 如果有人能帮我。 多谢各位