0.2.3 • Published 8 years ago
koa-session-ts v0.2.3
koa-session-ts
Generic session middleware for koa, easy use with custom stores such as redis or mongo, supports defer session getter.
This middleware will only set a cookie when a session is manually set. Each time the session is modified (and only when the session is modified), it will reset the cookie and session.
You can use the rolling sessions that will reset the cookie and session for every request which touch the session. Save behavior can be overridden per request.
Install
npm install koa-session-ts --save
Usage
import * as Koa from "koa";
import session from "koa-session-ts";
const app = new Koa();
app.use(session());
app.use(async ctx => {
// the parsed body will store in ctx.request.body
// if nothing was parsed, body will be an empty object {}
console.log(ctx.session);
console.log(ctx.sessionId);
console.log(ctx.sessionSave);
console.log(ctx.sessionStore);
ctx.regenerateSession();
});Options
keycookie name, defaulting tokoa.sidstoresession store instance, default is a MemoryStorereconnectTimeoutstore reconnectTimeout inms, default is onedaycookieOptionssession cookie settings, default is{ httpOnly: true, maxAge: 86400000, // one day in ms overwrite: true, path: '/', secure: false, signed: false, }deferdefer get session, you shouldawait this.sessionto get the session if defer is true, default is falserollingrolling session, always reset the cookie and sessions, default is falseallowEmptyallow session empty, default is falsegenSidyou can use your own generator for siderrorHanlderhandler for session store get or set errorvalidvalid(ctx, session), valid session value before use itbeforeSavebeforeSave(ctx, session), hook before save session
Session Store
You can use any other store to replace the default MemoryStore, it just needs to inherient the BaseStore and implement the following APIs:
get(sid: string): get session object by sidset(sid: string, sess: Session, ttl?: number): set session object for sid, with a ttl (in ms)destroy(sid: string): destroy session for sid
the api needs to return a Promise, Thunk or generator. And use these events to report the store's status.
DISCONNECTCONNECT