NashPL
NashPL

Reputation: 481

Printing a session object in ExpressJS

I am trying to print out a session object in middleware of an ExpressJS framework. I am new to a session with express and want to see if the object saves to Redis which I have configurated in the app.js file

[index.js (router)]
    router.use('/', function(req, res, next) {
        req.session.user = {};
        req.session.user.browserInformation = req.headers['user-agent'];
        console.log(req.session);
        next();
    });
    router.get('/', function(req, res, next) {
        res.render('index.html');
    });



[The app.js File:]
   'use strict';
    const createError = require('http-errors');
    const express = require('express');
    const path = require('path');
    const cookieParser = require('cookie-parser');
    const logger = require('morgan');
    const bodyParser = require('body-parser');
    const session = require('express-session');
    const redis = require('redis');
    const redisStore = require('connect-redis')(session);
    const client = redis.createClient();

    const app = express();

    const _Utils = require('./application/_Utils');

    // view engine setup
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'ejs');

    app.use(logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded({
        extended: false
    }));
    app.use(cookieParser());
    app.use(bodyParser.urlencoded({
        extended: false
    }))
    app.use(bodyParser.json())
    app.use(express.static(path.join(__dirname, 'views')));

    //require('./config/router')(app);
    let indexRouter = require('./routes/index');

    app.engine('html', require('ejs').renderFile)

    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
        next(createError(404));
    });

    // error handler
    app.use(function(err, req, res, next) {
        // set locals, only providing error in development
        res.locals.message = err.message;
        res.locals.error = req.app.get('env') === 'development' ? err : {};

        // render the error page
        res.status(err.status || 500);
        res.render('error');
    });

    app.use(session({
        secret: _Utils.getHashedValue(),
        store: new redisStore({
            host: '127.0.0.1',
            port: 6379,
            client: client,
            ttl: 3600000
        }),
        saveUninitialized: false,
        resave: false,
        cookie: {
            expires: new Date(Date.now() + 3600000),
            maxAge: 3600000
        },
    }));
    module.exports = app;

An issue I am having is that nothing is printing or Redis is empty when I execute KEYES * command in the terminal client interface

EDIT: Added a whole app.js file

Upvotes: 1

Views: 754

Answers (1)

anilkay
anilkay

Reputation: 144

in my case code is worked:

console.log(req.session);

Also use this in attend some information to session use this:

 req.session.mail="[email protected]";

İf you are in localhost add this unsecure cookie options in our code. For example:

app.use(session({ secret: 'GttiginYagmurlagelkuskunumyagmuralara' ,resave: true,
    saveUninitialized: true,
    cookie: { secure: false,maxAge:  3600000}}));

Upvotes: 1

Related Questions