express-session-mongo

MongoDB Session Store for ExpressJS

npm install express-session-mongo
3 downloads in the last day
39 downloads in the last week
79 downloads in the last month

MongoDB Session Storage for ExpressJS

This module is an addon for ExpressJS that adds a new Session Storage device.

Install

npm install https://github.com/trottski/express-session-mongo/archive/master.tar.gz

Usage

The standard usage, is to just pass an instantiated MongoStore instance to the session plugin.

var xp = require('express'),
    MongoStore = require('express-session-mongo');

var app = xp.createServer();

app.configure(function(){
    app.use(xp.cookieDecoder());
    app.use(xp.session({ store: new MongoStore() }));
    app.use(app.router);
});

You can also pass several options to the constructor to tweak your session store:

  • db - The name of the db to use, defaults to: express-sessions
  • ip - The IP address of the server to connect to, defaults to: 127.0.0.1
  • port - The Port to connect to, defaults to: 27017
  • collection - The collection to save it's data to, defaults to: sessions
  • server - A custom mongo Server instance (this overides db, ip & port):
  • fsync - Confirm writes after they have been flushed to disk, default: false.
  • native_parser - Use BSON native parser, defaults to: true.
var CustomServer = new Server(123.456.789.1, 12345, { auto_reconnect: true }, {});
app.use(xp.session({ store: new MongoStore({ server: CustomServer }) }));

Removing stale sessions

MongoDB 2.2 and above supports doing this via an index, see http://docs.mongodb.org/manual/tutorial/expire-data/ To enable this, run

db.sessions.ensureIndex( { "lastAccess": 1 }, { expireAfterSeconds: 3600 } )

Mongo will now remove all sessions older than an hour (every 60 seconds).

Changes from davglass/express-session-mongo

  1. Removes connect as a dependency
  2. Adds fsync and native_parser options to constructor
  3. Removes manual session cleanup cleanup code (see Removing stale sessions below)

License

Licensed under my standard BSD license.

Based on these classes

npm loves you