express-session-custom
v1.1.3
Published
[![npm version](https://badge.fury.io/js/express-session-custom.svg)](https://badge.fury.io/js/express-session-custom) ![Node.js CI](https://github.com/olamedia/express-session-custom/workflows/Node.js%20CI/badge.svg?branch=master)
Downloads
44
Readme
express-session-custom
Works as Express/Connect middleware The purpose of this library is the customization of every step.
If you need everything ready, use express-session instead.
Provides the following contracts to make own implementation for each part.
CookieEncoder
Encoding, decoding cookie value, can be used for signing. Default implementation passes value untouched in both sides.CookieHandler
Gets, sets cookie with given optionsIdGenerator
Generates unique session ID Default implementation usesuid-safe
packageSessionStore
Store for session data
Possible use cases
- to have the same session in different languages
- having a backend which generates session IDs itself
Installation
npm install --save express-session-custom
OR
yarn add express-session-custom
Minimal setup
Only use for debug since default SessionStore
keeps data in memory and will lose them at each script reload
app.use(session());
Basic syntax
Similar to express-session
package.
The notable difference is that name
moved to cookie
options
app.use(
session({
cookie: {
name: "id",
path: "/",
httpOnly: true,
secure: false,
maxAge: 24 * 60 * 60 * 1000,
},
}),
);
Customization
Example code for each implementation can be found in stubs/
folder.
app.use(
session({
cookie: {
name: "id",
},
cookieHandler: MyCookieHandler(),
cookieEncoder: MyCookieEncoder(),
idGenerator: MyIdGenerator(),
store: MyStore()
}),
);
Session object
Middleware creates session object at request,
which provides access to session data and a few useful helper methods
(see SessionDataWithHelpers
interface).
app.use(async (req, res, next) => {
req.session.mykey = 'value';
req.session.save();
next()
});
app.use(async (req, res, next) => {
req.session.destroy();
next()
});
Nest.js
Nest.js have @Session()
decorator at @nestjs/common
package, which returns request.session object
import { Controller, Get, Session } from '@nestjs/common';
@Controller()
class MyController{
@Get('myAction')
myAction(@Session() session){
}
}
License
MIT