Security News
38% of CISOs Fear Theyβre Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
nestjs-session
Advanced tools
Idiomatic Session Module for NestJS. Built on top of express-session π
This module implements a session with storing data in one of external stores and passing ID of session to client via Cookie
/Set-Cookie
headers.
If you want to store data directly in Cookie
, you can look at nestjs-cookie-session.
Register module:
// app.module.ts
import { Module } from '@nestjs/common';
import { NestSessionOptions, SessionModule } from 'nestjs-session';
import { ViewsController } from './views.controller';
@Module({
imports: [
// sync params:
SessionModule.forRoot({
session: { secret: 'keyboard cat' },
}),
// or async:
SessionModule.forRootAsync({
imports: [ConfigModule],
inject: [Config],
// TIP: to get autocomplete in return object
// add `NestSessionOptions` here βββ
useFactory: async (config: Config): Promise<NestSessionOptions> => {
return {
session: { secret: config.secret },
};
},
}),
],
controllers: [ViewsController],
})
export class AppModule {}
In controllers use NestJS built-in Session
decorator:
// views.controller.ts
import { Controller, Get, Session } from '@nestjs/common';
@Controller('views')
export class ViewsController {
@Get()
getViews(@Session() session: { views?: number }) {
session.views = (session.views || 0) + 1;
return session.views;
}
}
BE AWARE THAT THIS EXAMPLE IS NOT FOR PRODUCTION! IT USES IN-MEMORY STORE, SO YOUR DATA WILL BE LOST ON RESTART. USE OTHER STORES
See redis-store example in examples
folder.
To run examples:
git clone https://github.com/iamolegga/nestjs-session.git
cd nestjs-session
npm i
npm run build
cd examples/in-memory # or `cd examples/redis-store`
npm i
npm start
For Redis example, you should start Redis on localhost:6379.
If you have Docker installed you can start Redis image by npm run redis
from redis-store
directory.
npm i nestjs-session express-session @types/express-session
SessionModule
class has two static methods, that returns DynamicModule
, that you need to import:
SessionModule.forRoot
for sync configuration without dependenciesSessionModule.forRootAsync
for sync/async configuration with dependenciesAccept NestSessionOptions
. Returns NestJS DynamicModule
for import.
Accept NestSessionAsyncOptions
. Returns NestJS DynamicModule
for import.
NestSessionOptions
is the interface of all options. It has next properties:
session
- required - express-session options.forRoutes
- optional - same as NestJS buil-in MiddlewareConfigProxy['forRoutes']
See examples in official docs. Specify routes, that should have access to session. If forRoutes
and exclude
will not be set, then sessions will be set to all routes.exclude
- optional - same as NestJS buil-in MiddlewareConfigProxy['exclude']
See examples in official docs. Specify routes, that should not have access to session. If forRoutes
and exclude
will not be set, then sessions will be set to all routes.retries
- optional - number
- by default if your session store lost connection to database it will return session as undefined
, and no errors will be thrown, and then you need to check session in controller. But you can set this property how many times it should retry to get session, and on fail InternalServerErrorException
will be thrown. If you don't want retries, but just want to InternalServerErrorException
to be throw, then set to 0
. Set this option, if you dont't want manualy check session inside controllers.retriesStrategy
- optional - (attempt: number) => number
- function that returns number of ms to wait between next attempt. Not calls on first attempt.NestSessionAsyncOptions
is the interface of options to create session module, that depends on other modules. It has next properties:
imports
- optional - modules, that session module depends on. See official docs.inject
- optional - providers from imports
-property modules, that will be passed as arguments to useFactory
method.useFactory
- required - method, that returns NestSessionOptions
.express-session
and @types/express-session
are moved to peer dependencies, so you can update them independently.
FAQs
Idiomatic NestJS module for session
The npm package nestjs-session receives a total of 1,446 weekly downloads. As such, nestjs-session popularity was classified as popular.
We found that nestjs-session demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.Β It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.