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
- to have the same session in different languages
- having a backend which generates session IDs itself
npm install --save express-session-custom
OR
yarn add express-session-custom
Only use for debug since default SessionStore
keeps data in memory and will lose them at each script reload
app.use(session());
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,
},
}),
);
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()
}),
);
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 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){
}
}
MIT