koa-session-async

0.0.2 • Public • Published

koa-session-async

Simple cookie-based session middleware for Koa 2. Forked from For Koa 2, use koa-session to use ES6 and ES7 async/await keywords.

Installation

$ npm i --save koa-session-async

Example

View counter example:

'using strict';
/*
    Import required dependencies
 */
const session = require('koa-session-async');
const Koa = require('koa');

/*
    Instantiate the koa app
 */
const app = new Koa();

/*
    Setup secrets
 */
app.keys = ['secret'];

/*
    Attach middleware
 */
app.use(session(app));

/*
    Hopefully this works...
 */
app.use(async (ctx) => {
  if ('/favicon.ico' === ctx.path){
    return;
  }
  let n = ctx.session.views || 0;
  ctx.session.views = ++n;
  ctx.body = n + ' views';
});

/*
    Turn it on
 */
app.listen(3000);
console.log('listening on port 3000');

Semantics

This module provides "guest" sessions, meaning any visitor will have a session, authenticated or not. If a session is new a Set-Cookie will be produced regardless of populating the session.

API

Options

The cookie name is controlled by the key option, which defaults to "koa:sess". All other options are passed to ctx.cookies.get() and ctx.cookies.set() allowing you to control security, domain, path, and signing among other settings.

Custom encode/decode Support

Use options.encode and options.decode to customize your own encode/decode methods.

Hooks

  • valid(): valid session value before use it
  • beforeSave(): hook before save session

Session#isNew

Returns true if the session is new.

Session#maxAge

Get cookie's maxAge.

Session#maxAge=

Set cookie's maxAge.

Destroying a session

To destroy a session simply set it to null:

this.session = null;

Session Stores

This module only supports cookie sessions. There are many other modules listed in koa's wiki for sessions that use database storage. Unlike Connect 2.x's session middleware, there is no main "session" middleware that you plugin different stores - each store is a completely different module.

If you're interested in creating your own koa session store, feel free to fork/extend this repository and add additional tests. At a minimum, it should pass this repositories' tests that apply. Ideally, there would be a central repository with specifications and tests for all koa sessions, which would allow interoperability and consistency between session modules. If you're interested in working on such a project, let us know!

License

MIT

Package Sidebar

Install

npm i koa-session-async

Weekly Downloads

1

Version

0.0.2

License

MIT

Last publish

Collaborators

  • selby