New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

sesame

Package Overview
Dependencies
Maintainers
0
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sesame

Session middleware for lazy people.

latest
Source
npmnpm
Version
0.1.2
Version published
Weekly downloads
12
Maintainers
0
Weekly downloads
 
Created
Source

sesame

Sesame is a session middleware for express/connect for amazingly simple sessions. To update sessions, just modify req.session.

example

var connect = require('connect');
var webserver = connect.createServer();
webserver.use(require('sesame')());

webserver.use(connect.router(function (app) {
    app.get('/', function (req, res) {
        req.session.times = (req.session.times || 0) + 1;
        
        res.writeHead(200, { 'Content-Type' : 'text/plain' });
        res.end(req.session.times + ' times!');
    });
}));

console.log('Listening on 9090');
webserver.listen(9090);

Run this program and it will repeatedly increment a counter. Woo! However!

When you restart the above server or when it crashes you'll lose all of your sessions! Never fear, with sesame it's super easy to persist sessions across restarts! Just swap out

webserver.use(require('sesame')());

with this to use nStore:

webserver.use(require('sesame')({
    store : require('nStore')(__dirname + '/nstore.db')
}));

or if you want to use supermarket:

webserver.use(require('sesame')({ 
    store : new(require('supermarket'))({
        filename : __dirname + '/supermarket.db', json : true,
    })
}));

or if you'd like to use chaos

webserver.use(require('sesame')({
    store : require('chaos')(__dirname + '/chaos.db').mount('sessions')
}));

If your favorite database backend isn't listed you should send me a pull request!

Check out the examples/ directory for more examples.

usage

sesame(options)

Options can be:

  • store - the storage engine to use

  • cookieName - the cookie name to use, defaults to session_id

  • sessions - the sessions to start with if you'd rather load them yourself

requests

Sesame adds session, sessions, and sessionID to the req object. You can modify req.sessions[req.sessionID] just the same as req.session.

If you assign a new value to req.session like this:

req.session = { x : 55 };

it will also just work, even when using a persistent store.

To empty the session, just do:

req.session = {}

Easy!

the secret sauce

Wait a moment! How can you just throw a database at this AND modify deeply nested elements in req.session, you may be asking yourself?

Under the hood, harmony proxies trap updates to the req.session object to keep the sessions on disk in sync with the in-memory sessions.

Keywords

sessions

FAQs

Package last updated on 31 Mar 2011

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts