1.1.3 • Published 4 years ago

express-session-custom v1.1.3

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

express-session-custom

npm version Node.js CI

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 options
  • IdGenerator Generates unique session ID Default implementation uses uid-safe package
  • SessionStore 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

1.1.3

4 years ago

1.1.1

4 years ago

1.1.2

4 years ago

1.1.0

4 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.0

4 years ago