0

I set a session variable called user upon login:

req.session.authenticated_user = user;

When I set the session again later it doesn't update:

req.session.authenticated_user = somenewvalue;

This will still contain the original value of user. App module:

var session = require('express-session');
var redisStore = require('connect-redis')(session);
var redisClient = redis.createClient();
const sessionMiddleware = session({ secret: 'foo' });

app.use(session({
  store: new redisStore({ client: redisClient }),
  secret: 'secretsession',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: false, sameSite: true, expires: 7200000 }
}))

app.use('/users', sessionChecker, usersRouter);

My router:

var express = require('express');
var router = express.Router();
var user_controller = require('../controllers/userController')
/* GET user update. */
router.get('/user_login/login', user_controller.user_login_get);

/* POST user update. */
router.post('/user_login/login', user_controller.user_login_post);

/* GET user update. */
router.get('/:username/update', user_controller.user_update_get);

/* POST user update. */
router.post('/:username/update', user_controller.user_update_post);

How can I update a session variable in node?

Julian Porter
  • 187
  • 2
  • 13
  • Please show the actual route handler code where you're updating the session (the whole route handler). Also, please tells us whether you're using the default Memory Store or some other store for express-session as some stores require you to call `req.session.save()` to commit changes or if you're making the change inside an asynchronous completion callback. – jfriend00 Sep 01 '20 at 00:05
  • As I asked before, please show the actual route handler code where you're trying to update the session. And, did you try calling `req.session.save()` after modifying the session? – jfriend00 Sep 01 '20 at 00:31

1 Answers1

0

Answered here: Sessions won't save in Node.js without req.session.save()

req.session won't update automatically if req is a Post request. For Post requests, one must call req.session.save() unless data is sent out through res.send, res.redirect, etc.

Julian Porter
  • 187
  • 2
  • 13