https://github.com/olamedia/express-session-custom
Express-like session middleware with every step customizable. (If you need everything ready, use express-session instead)
https://github.com/olamedia/express-session-custom
connect express express-middleware express-session nestjs
Last synced: 4 months ago
JSON representation
Express-like session middleware with every step customizable. (If you need everything ready, use express-session instead)
- Host: GitHub
- URL: https://github.com/olamedia/express-session-custom
- Owner: olamedia
- License: mit
- Created: 2020-07-05T11:35:05.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-06T11:00:49.000Z (over 3 years ago)
- Last Synced: 2025-10-15T08:33:56.625Z (9 months ago)
- Topics: connect, express, express-middleware, express-session, nestjs
- Language: TypeScript
- Homepage:
- Size: 880 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# express-session-custom
[](https://badge.fury.io/js/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 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
```shell script
npm install --save express-session-custom
```
OR
```shell script
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
```js
app.use(session());
```
### Basic syntax
Similar to `express-session` package.
The notable difference is that `name` moved to `cookie` options
```js
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.
```js
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).
```js
app.use(async (req, res, next) => {
req.session.mykey = 'value';
req.session.save();
next()
});
```
```js
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
```js
import { Controller, Get, Session } from '@nestjs/common';
@Controller()
class MyController{
@Get('myAction')
myAction(@Session() session){
}
}
```
### License
MIT