I've deployed my front-end(React with Typescript) and backend (Nodejs with Typescript) to Heroku separately. I'm using express-session and connect-redis to maintain the user session, for which I'm using an external Redis service called Redistogo.

When I run my apps locally, req.session is present, and upon authenticating the user during login, I'm able to set the user's session in req.session.user. However, when running the backend on Heroku in the exact same way, req.session remains undefined.

if(process.env.NODE_ENV === 'production') {
      this.app.set('trust proxy', 1) 
      const rtg   = url.parse(process.env.REDISTOGO_URL);
      const redisClient = redis.createClient(rtg.port, rtg.hostname);
      redisClient.auth(rtg.auth.split(":")[1]);


      this.app.use(session({
        name: 'random_pur',
        store: new RedisStore({
            redisClient
        }),
        secret: 'meow',
        resave: true,
        saveUninitialized: false,
        cookie: {
          secure: false,
          sameSite: false,
          maxAge: 36000000,
          httpOnly: false,
        }
      }));
    }

So I'm not sure what I'm missing here - it doesn't give any problems on localhost. Any help would be appreciated. Thanks!

0

There are 0 best solutions below