Паспорт не вызывается - PullRequest
0 голосов
/ 17 марта 2020

моя паспортная стратегия никогда не называется. Недавно я добавил паспорт в свой проект и использую API-интерфейс Boxes для входа в систему. Я выполнил примерную задачу в другом проекте и заставил его работать (https://github.com/smithdavedesign/OAUTH-Passport-BoxAPILogin-Example/blob/master/login/BoxLogin.js), однако, когда я пытаюсь интегрировать его в мой текущий проект что-то пошло не так. Я читаю сеансы и сеанс паспорта разные и не должны вызывать проблемы, это означает, что я пытаюсь выяснить, какое промежуточное ПО вызывает проблему. API коробки работает корректно и возвращает меня на панель управления при обратном вызове, однако паспорта должны быть пропущены.

var products = require("../controllers/products");//get functions from product like add update delete ect
var validations = require("../controllers/validations");//get functions from product like add update delete ect
var settings = require("../config/settings");// get all things from settings we need
var Promise = require("bluebird");// adding promise mechanism
var bodyParser = require('body-parser');
var express = require('express');//web framework for node
const expressLayouts = require('express-ejs-layouts');// ejs view engine
const flash = require('connect-flash');//for error and success messages
const session = require('express-session');// holds data of users after login
const uuid = require('uuid')
var MemoryStore = require('memorystore')(session)//https://www.npmjs.com/package/memorystore
const util = require('util');
var os = require("os");
var hostname = os.hostname();//This is the users computer name
const multer = require('multer');
var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, 'uploads/')
    },
    filename: function (req, file, cb) {
        cb(null, file.originalname)
    }
})
const upload = multer({ storage: storage })
var path = require('path');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var passport = require('passport');
var BoxStrategy = require('passport-box').Strategy;
const app = express();//create instance of express


var BOX_CLIENT_ID = "**";
var BOX_CLIENT_SECRET = "**";


// Passport middleware
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function (user, done) {
    console.log("serializeUser")//NEVER BEING CALLED
    done(null, user);
});
passport.deserializeUser(function (obj, done) {
    console.log("deserializeUser")//NEVER BEING CALLED
    done(null, obj);
});
passport.use(new BoxStrategy({
    clientID: BOX_CLIENT_ID,
    clientSecret: BOX_CLIENT_SECRET,
    callbackURL: "http://localhost:9000/dashboard"
},
    function (accessToken, refreshToken, profile, done) {
        // asynchronous verification, for effect...
        process.nextTick(function () {
            return done(null, profile);
        });
    }
));

//EJS
app.use(expressLayouts);
app.set('view engine', 'ejs');//view engine

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(
    session({
        genid: (req) => {
            console.log('Inside session middleware genid function')
            console.log('Request object sessionID from client: ' + req.sessionID);
            var new_sid = uuid.v4();
            console.log('New session id generated: ' + new_sid);
            return new_sid; // use UUIDs for session IDs
        },
        store: new MemoryStore({
            checkPeriod: 86400000 // prune expired entries every 24h
        }),
        secret: 'secret',
        resave: true,
        httpOnly: false,
        saveUninitialized: false,
        cookie: {
            maxAge: 24 * 60 * 60 * 1000
        }
    })
);
// Connect flash
app.use(flash());

// Global variables
app.use(function (req, res, next) {//diferent colors
    res.locals.success_msg = req.flash('success_msg');
    res.locals.error_msg = req.flash('error_msg');
    res.locals.error = req.flash('error');
    next();
});

//routes
app.use('/', require('./GraphRoutes'));
app.use('/', require('./dashboardRoutes'));
app.use('/', require('./index'));
app.use('/', require('./extraProccess'));

app.use(passport.initialize());
app.use(passport.session());

app.use(express.static('public'));//public folder where all templates live
app.use(express.static("."));

app.get('/', function (req, res) {
    res.render('index', { user: req.user });
});

app.get('/login', function (req, res) {
    res.render('login', { user: req.user });
});

app.get('/auth/box', passport.authenticate('box'), function (req, res) {
    console.log("box call")
    });
app.get('/auth/box/callback',
    passport.authenticate('box', { failureRedirect: '/login' }),
    function (req, res) {
        res.redirect('/dashboard');
    });

app.get('/logout', function (req, res) {
    req.logout();
    res.redirect('/login');
});

1 Ответ

0 голосов
/ 18 марта 2020

Я звонил по своим маршрутам до инициализации паспорта, а также, когда парсер cook ie и другая промежуточная посылка находились не в том месте.

...