Sean
Sean

Reputation: 1364

Express creating lots of sessions

I have only realised that this has been happening.

My stack:

When I log into my website, I see that the collection sessions is created, with one record (as one would expect). Then, I navigate around the website and noticed that my sessions have goes to 13 records. Then, I navigate some more and I see that it has gone over 27.

What in the world is going on? Am I doing something that is causing this?

My main app.js file is below:

var config = require('./config/config.js');
var express = require('express');
var favicon = require('serve-favicon')
var app = express();
var path = require('path');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var ConnectMongo = require('connect-mongo')(session);
var mongoose = require('mongoose').connect(config.dbURL);
var passport = require('passport');
var FacebookStrategy = require('passport-facebook').Strategy;
var bodyParser = require('body-parser');

app.set('views', path.join(__dirname, 'views'));
app.engine('html', require('hogan-express'));
app.set('view engine', 'html');
app.use(favicon(path.join(__dirname, 'public', '/images/favicon.ico')));
app.use(express.static(path.join(__dirname, 'public')));
app.use(cookieParser());
app.use(session({
    secret:config.sessionSecret,
    store: new ConnectMongo({
        mongooseConnection:mongoose.connections[0],
        stringigy:true,
        touchAfter: 24 * 3600
    }),
    saveUninitialized:true,
    resave:true
}));

app.use(session({secret:config.sessionSecret, saveUninitialized:true, resave:true}));
app.use(passport.initialize());
app.use(passport.session());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

require('./schemas/allSchemas.js')(mongoose);
require('./auth/passportAuth.js')(passport, FacebookStrategy, config, mongoose, moment);

//Main URL router
require('./routes/routes.js')(express, app, passport, mongoose);

app.listen(3000, function(){
    console.log('App is working on Port 3000');
});

Each one of my sessions look like the below (if it helps in any way):

{
"_id": "cSqLjOGJlYBvNLYJ8v6zXqtqzuIcGwbx",
"session": "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"}}",
"expires": "2017-10-10 22:46:09",
"lastModified": "2017-09-26 22:46:09"
}

Upvotes: 0

Views: 264

Answers (1)

Amit Wagner
Amit Wagner

Reputation: 3264

Try this

var config = require('./config/config.js');
var express = require('express');
var favicon = require('serve-favicon')
var app = express();
var path = require('path');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var ConnectMongo = require('connect-mongo')(session);
var mongoose = require('mongoose').connect(config.dbURL);
var passport = require('passport');
var FacebookStrategy = require('passport-facebook').Strategy;
var bodyParser = require('body-parser');

app.set('views', path.join(__dirname, 'views'));
app.engine('html', require('hogan-express'));
app.set('view engine', 'html');
app.use(favicon(path.join(__dirname, 'public', '/images/favicon.ico')));
app.use(express.static(path.join(__dirname, 'public')));
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(session({
    secret:config.sessionSecret,
    store: new ConnectMongo({
        mongooseConnection:mongoose.connections[0],
        stringigy:true,
        touchAfter: 24 * 3600
    }),
    saveUninitialized:true,
    resave:true
}));

app.use(passport.initialize());
app.use(passport.session());


require('./schemas/allSchemas.js')(mongoose);
require('./auth/passportAuth.js')(passport, FacebookStrategy, config, mongoose, moment);

//Main URL router
require('./routes/routes.js')(express, app, passport, mongoose);

app.listen(3000, function(){
    console.log('App is working on Port 3000');
});

Upvotes: 1

Related Questions