express-session-custom v1.1.3
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.
CookieEncoderEncoding, decoding cookie value, can be used for signing. Default implementation passes value untouched in both sides.CookieHandlerGets, sets cookie with given optionsIdGeneratorGenerates unique session ID Default implementation usesuid-safepackageSessionStoreStore 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-customOR
yarn add express-session-customMinimal 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