File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -104,12 +104,23 @@ redisClient.on('error', (err) => {
104104} )
105105
106106// Initialize store.
107+ // Calculate session max age in seconds (for Redis TTL)
108+ const sessionMaxAgeSeconds = process . env . VITE_SESSION_MAX_AGE
109+ ? parseInt ( process . env . VITE_SESSION_MAX_AGE )
110+ : 60 * 60 // Default: 1 hour in seconds
111+
112+ // CRITICAL: Set Redis TTL to match session maxAge
113+ // Without this, Redis uses its own default TTL which may expire sessions prematurely
107114let redisStore = new RedisStore ( {
108115 client : redisClient ,
109- prefix : 'api-explorer-ii:'
116+ prefix : 'api-explorer-ii:' ,
117+ ttl : sessionMaxAgeSeconds // TTL in seconds - MUST match cookie maxAge
110118} )
111119
112120console . info ( `Environment: ${ app . get ( 'env' ) } ` )
121+ console . info (
122+ `Session maxAge configured: ${ sessionMaxAgeSeconds } seconds (${ sessionMaxAgeSeconds / 60 } minutes)`
123+ )
113124app . use ( express . json ( ) )
114125let sessionObject = {
115126 store : redisStore ,
@@ -119,9 +130,7 @@ let sessionObject = {
119130 cookie : {
120131 httpOnly : true ,
121132 secure : false ,
122- maxAge : process . env . VITE_SESSION_MAX_AGE
123- ? parseInt ( process . env . VITE_SESSION_MAX_AGE ) * 1000
124- : 60 * 60 * 1000 // Default: 1 hour in milliseconds (value in env should be in seconds)
133+ maxAge : sessionMaxAgeSeconds * 1000 // maxAge in milliseconds
125134 }
126135}
127136if ( app . get ( 'env' ) === 'production' ) {
You can’t perform that action at this time.
0 commit comments