Search code examples
node.jsexpressexpress-session

Unable to extend session timeout in express/express-session


Totally unable to understand why cookie and expires aren't working. The user gets authorized and logs into the account. However, no matter what maxAge or expires I mention in the app.js, it always logs out the user after every few seconds (or a couple of minutes at the most). Webpages are SSL secure (HTTPS):

const express = require('express');
const app = express();
const session = require('express-session');
const mysql = require('mysql');
const bodyParser = require('body-parser');
const connection = mysql.createConnection({
//connection details here
});

app.use(bodyParser.urlencoded({extended : false}));
app.use(bodyParser.json());
app.set('view engine', 'ejs');

app.use(session({
    secret: 'secret code here',
    expires: new Date(Date.now() + (60 * 24 * 7 * 1000))
}));

app.get('/login', function(req, res) {
    res.render('pages/login');
});

app.post('/auth', function(request, response) {
    var username = request.body.username;
    var password = request.body.password;
    if (username && password) {
        connection.query(query here) {
            if (results.length > 0) {
                request.session.loggedin = true;
                request.session.username = username.toString();
                response.redirect('/account');
            }           
        });
    } else {
        response.send('Please enter Username and Password!');
        response.end();
    }
});

// account page 
app.get('/account', function(req, res) {
    if (req.session.loggedin !== true) {
        res.render('pages/login');
    } else {
        //account page redirection here
    }
});

Solution

  • Using cookie-session instead of express-session and it works fine.