Ron I
Ron I

Reputation: 4250

passing variable info in a session in Express

I am new to Express sessions and was hoping I could get some help as to passing along variables using express-session.

Essentially I am using passport to allow GitHub logins, and I can get the user's info using req.user. When the user logs in via GitHub I wanted to redirect the user to a login page which would ask the user to validate the information before creating the account, or if the account already exists render a welcome page.

let app = express();
app.use(session({secret: "blahblahblah"}));

console.log('github authenticated');
let sess = req.session;
//I want to pass the req.user(returned from GitHub) to a variable sess.user
sess.user = req.user; 
console.log(sess.user); //shows correct info    
res.redirect('/user/login');

module.exports = app;

However, when I try to access req.session from my route it returns 'undefined':

let session = require('express-session');
let app = express();

app.use(session({secret: "blahblahblah"}));
app.use(router);

router.get('/login', function(req, res, next) {
    let sess = req.session;
    console.log(sess.user); //undefined
    //would check the database
    //if user doesn't already exists pre-populate fields
    //render appropriate page
  });

Upvotes: 2

Views: 1730

Answers (1)

Anshuman Singh
Anshuman Singh

Reputation: 1152

You should pass the data in request object itself

let sess = req.session;
sess.user = req.user;
req.mysess=sess.user //pass like this


router.get('/login', function(req, res, next) {
let sess = req.mysess;
console.log(sess);
  });

Upvotes: 1

Related Questions