tutorial node example session express redis passport.js middleware

session - node - pasando los datos de la sesión del pasaporte a redis en producción



node js express-session example (0)

Estoy tratando de pasar la sesión desde el pasaporte después de la autenticación, y almacenar la sesión de datos en redis. He leído algunos artículos que el pasaporte no puede manejar la sesión durante la producción en vivo, por lo que he decidido utilizar redis como almacenamiento de sesión. Ahora mi problema es que no tenía idea de qué está pasando con el código, parece que no almacena una sesión. cuando req.session la req.session todo lo que tengo son las cookies. Estoy tratando de almacenar datos como req.session.user pero no funcionó. Aquí está mi código:

passport.use(''login'', new LocalStrategy({ passReqToCallback: true}, function(req, username, password, done) { user_model.Authenticate(username, function(err, rows) { var exist = rows.length > 0 ? true : false; if(exist) { var user = rows[0]; var value = bcrypt.compareSync(password, user.password_ln); if(value) { req.session.regenerate(function() { req.session.cookie.maxAge = 604800000; req.session.user = user // contains user information in json }) return done(null, user); } } else { return done(null, false); } }); } )); // serialize and deserialize passport.serializeUser(function(user, done) { done(null, user); }); passport.deserializeUser(function(username, done) { done(null, {username: username}); });

preparar

var express = require(''express''); var redis = require("redis"); var session = require(''express-session''); var redisStore = require(''connect-redis'')(session); var parser = require(''body-parser''); var RedisClient= redis.createClient({detect_buffers: true}); app.use(session({ secret: ''mysecretsdasdasdasdasd'', store: new redisStore({host: ''localhost'', port: 6379,client: RedisClient,ttl : 260}), saveUninitialized: false, resave: false, cookie: { secure: true } })); RedisClient.on(''error'', function(err) { console.log(''Redis error: '' + err); }); RedisClient.on("ready",function (err) { console.log("Redis is ready" ); }); RedisClient.on("connect",function (err) { console.log("Connected to redis"); }); RedisClient.on("reconnecting",function (err) { console.log("Reconnecting to redis"); }); app.use(parser.json()); app.use(parser.urlencoded({extended: true})); app.use(passport.initialize()); app.use(passport.session()); app.use(function(req, res, next){ if(req.originalUrl.match(''/auth/user/signin'')) { passport.session()(req, res, next) } else { next(); // do not invoke passport } });