Note as of [email protected] and higher, this plugin now requires co-koa-mongoose-plugin@1.1.0 or higher
koa-session plugin with support for mongoose within the Co.Koa MVC environment.
This plugin (available in the Co.Koa MVC from version @0.17.0 onwards) aims to consolidate koa-session and a modified implementation of koa-session-mongoose into one easy-to-install plugin module; thereby enabling secure session management that is handled via a session collection in your MongoDB database.
add co-koa-session-plugin to a Co.Koa project instance via:
npm i co-koa-session-plugin --save
within your app.js ensure you have a connection setup to co-koa-mongoose-plugin. add the co-koa-session-plugin as a requirement and pass the SessionPlugin call to the MongoosePlugin as below:
const fs = require('fs');
const MongoosePlugin = require('co-koa-mongoose-plugin');
const SessionPlugin = require('co-koa-session-plugin');
if (fs.existsSync('./node_modules')) {
const CoKoa = require('co-koa-core');
try {
const coKoa =
CoKoa(__dirname)
.launch(MongoosePlugin({ plugins: [SessionPlugin()] })); // <= HERE!
...
The SessionPlugin
can optionally be called with a configuration object. The properties of this object are described below:
...
SessionPlugin({
keys: ... // (optional) supply a reference to an array of keys to be used by app.keys, will defer to Co.Koa's defaults if keys are not supplied.
name: ... // the name of the collection (default is "Session")
expires: ... // the amount of time in seconds until the session expires
}));
In a controller, your session object is exposed as below:
async 'GET /session' (ctx) {
const { session } = ctx;
let n = session.views || 0;
session.views = ++n;
ctx.body = `${n} view(s)`;
}
for more information on sessions, please see: koa-session.
(thanks to @mjbondra for koa-session-mongoose)