不被称为护照

问题描述 投票:0回答:1

我的护照策略从未被采用。我最近将护照添加到了我的项目中,并且正在使用Boxes API登录用户。我已经在另一个项目中完成了示例问题,并使其起作用(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');
});
node.js express passport.js box-api
1个回答
0
投票

我在初始化护照之前打电话给我的路线,以及cookie解析器和其他中间件不在正确的位置。

© www.soinside.com 2019 - 2024. All rights reserved.