NodeJS Express session is working in localhost but not working in Linux live server

40 Views Asked by At

I am trying to adjust my NodeJS Express project to use a Session Timeout of 2 Hours. Default timeout is 10 Minutes as I have checked.

Below I have attached my app.js and login.js files codings. While testing in localhost, when the session time is expired after 2 hours, it will redirect to Login page of my application. But after Releasing in Live Linux Server, the Session is Expired in Default Timeout of 10 Minutes. In Live Linux Server the app.js file is in the path of /home/centos/myProject/app.js and in the Live Linux Server I'm using forever app.js command to run the Application.

My app.js file Contains :

var createError = require('http-errors');
var express = require('express');
var expressLayouts = require('express-ejs-layouts')
var path = require('path');
var cookieParser = require('cookie-parser');
const bodyParser = require("body-parser");
var logger = require('morgan');
const session = require('express-session');

var loginRouter = require('./routes/login');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var playerRouter = require('./routes/player');
var staffRouter = require('./routes/staff');
var mediaRouter = require('./routes/media');
var playerformRouter = require('./routes/playerform');
var playerstatsRouter = require('./routes/playerstats');
var staffstatsRouter = require('./routes/staffstats');
var mediastatsRouter = require('./routes/mediastats');

const twoDays = 1000 * 60 * 60 * 24 * 2;
const twoHours = 1000 * 60 * 60 * 2;
const twentySeconds = 1000 * 20;

var app = express();
app.set('port', 3300);
app.listen(app.get('port'));
app.use(bodyParser.urlencoded({
  extended: false
}));
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
//app.set('view options', {layout: 'layout.ejs'});

// Define the layout file
app.use(expressLayouts)
app.set('layout', './layouts/masterlayout')

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(session({
  secret: "CPLAppSession2Hours",
  saveUninitialized:true,
  cookie: { 
    //secure: true,
    expires: new Date(Date.now() + twoHours),
    maxAge: twoDays 
  },
  resave: false
}));

app.use('/', loginRouter);
app.use('/login', loginRouter);
app.use('/index', indexRouter);
app.use('/users', usersRouter);
app.use('/player', playerRouter);
app.use('/staff', staffRouter);
app.use('/media', mediaRouter);
app.use('/playerform', playerformRouter);
app.use('/playerstats', playerstatsRouter);
app.use('/staffstats', staffstatsRouter);
app.use('/mediastats', mediastatsRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

My login.js file Contains :

const express = require('express');
const router = express.Router(); 
const db = require('../database');
const path = require('path');            

// Middleware to parse request bodies
router.use(express.json()); // for parsing application/json
router.use(express.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

router.get('/', function(req, res, next) {  
  res.render('login', { layout: false, activepath: '' });
});

router.post('/', function(req, res, next) {
    const loginDetails = req.body;
    if(!loginDetails.UserName){
        return res.send({
          message: "Please Enter Username",
          success: false
        }); 
      }
      else if(!loginDetails.Password){
        return res.send({
          message: "Please Enter Password",
          success: false
        }); 
      }
      else if(loginDetails.UserName.toLowerCase() == 'UserName'.toLowerCase() && loginDetails.Password == 'Password') {
        req.session.user = loginDetails.UserName;
        req.session.save();
        //req.session.destroy();
        return res.send({success: true, message: "Success"});
      }
      else {
        return res.send({
          message: "Please Enter Correct Username and Password",
          success: false
        }); 
      }
});

module.exports = router;

My Installed Packages in Local and Live Linux Server are :

[email protected] /home/centos/myProject
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] extraneous
└── [email protected] extraneous

How can I achieve Session Timeout of 2 Hours by changing Default Timeout 10 Minutes, after Session expired. Have to find that the session is not working because of my code or Have to make any changes in Live Linux Server.

0

There are 0 best solutions below