Search code examples
javascriptnode.jsexpress-4express-session

Express-session defined in one route file not available in app.js Node JS


I have issue with express-session in node js and express 4. I set a session variable inside routes/index.js and is not available in app.js.But available on another route file users.js

routes/index.js

var sess;
router.get('/setsession',function(req,res){
    sess=req.session;
    sess.username="safeer"; 
    res.send("hi "+sess.username);
});

router.get('/getsession',function(req,res){
    sess=req.session;
    res.send("hi "+sess.username); //here session value available
});

routes/users.js

var sess;
router.get('/session3',function(req,res){
    sess=req.session;
    res.send("hi "+sess.username); // here also session is available
});

app.js

var session = require('express-session');
app.use(session({secret: 'secret',saveUninitialized: true,resave: true}));

var sess;
app.get('/session1',function(req,res){
    sess=req.session;
    res.send("hi "+sess.username); //here session is undefined
});
app.use('/', routes);
app.use('/users', users);

Can anyone give me a solution please. ?


Solution

  • I suggest you set username in session:

    In routes/index.js

    router.get('/setsession',function(req,res){
           req.session.username="safeer"; 
           res.send("hi "+ req.session.username);
    });
    

    And in app.js

    app.get('/session1',function(req,res){
        res.send("hi "+ req.session.username); //get from session. Can be set in variable too
    

    });