nnn-session

0.1.2 • Public • Published

nnn-session

build status coverage status

Setup

var Server  = require('nnn');
var Cookies = require('cookies');
var Session = require('nnn-session');

var server = new Server({ ... });

server.on('cookies', Cookies.express(keys));
server.on('session', ['cookies'], Session.middlevare());

Bind the session middleware to the server. nnn-session assumes that the cookies library is used to parse cookies. It is therefore recommended that the cookies middleware be a middleware dependency in nnn.

Guest sessions

Guest sessions are not spawned by default. To create guest sessions you may create a separate middleware to spawn these sessions.

server.on('guest-session', ['session'], function (req, res, callback) {
  if (!req.session)
    req.session = new Session(req, res, {user: 'guest'});
  callback();
});

Server.middleware([options])

Creates a session middleware configured with the given options.

name

The name of the session cookie

rolling

Resets the maxAge of the session cookie on every request.

cookie

Options for the session cookie. These options are passed to the cookies middleware when creating the session cookie. See the cookies package for the full list of options.

genuid

A function to generate session ids.

store

The session store is an object supporting the following functions:

Store.get(sid, callback)

Store.set(session, callback)

Store.del(session, callback)

API

Session.touch()

Forces the session cookie to updated resetting the cookie's expiration. If rolling sessions are enabled then this method is called on every request and needs not be called manually.

Session.save([callback])

Forces the session to be saved even if the session has not been modified.

Session.destroy([callback])

Deletes the current session. Setting the session to null or using delete on it will also delete the session.

Example

server.post('/login?user&pw', ['cookies'], function (req, res, user, pw) {
  db.authenticate(user, pw, function (err, data) {
    if (err)
      return server.raise('500', req, res, err);

    if (!data.authenticated)
      return server.raise('401', req, res);

    req.session = new Session(req, res, {user: data.user});
    res.end('welcome ' + req.session.user);
  });
});

server.get('/logout', ['session'], function (req, res) {
  if (req.session)
    delete req.session;
  req.end('you have logged out');  
});

Readme

Keywords

none

Package Sidebar

Install

npm i nnn-session

Weekly Downloads

0

Version

0.1.2

License

MIT

Last publish

Collaborators

  • thhethssmuz