Session-based authentication helps keep users logged in by saving their login info on the server. It makes sure only the right people can access protected parts of your app.
Session-based authentication in NestJS
import { Module } from '@nestjs/common'; import * as cookieParser from 'cookie-parser'; import * as session from 'express-session'; @Module({ // Session configured in bootstrap }) export class AppModule {} // In main.ts or bootstrap: /* app.use(cookieParser()); app.use(session({ secret: 'your-secret-key', resave: false, saveUninitialized: false, })); */ // In your controller import { Controller, Get, Req, Res } from '@nestjs/common'; import { Request, Response } from 'express'; @Controller() export class AuthController { @Get('login') login(@Req() req: Request, @Res() res: Response) { req.session.user = { id: 1, name: 'Alice' }; res.send('Logged in'); } @Get('profile') profile(@Req() req: Request) { if (req.session.user) { return req.session.user; } return 'Not logged in'; } }
Configure cookie-parser and express-session middleware in the NestJS bootstrap() function.
Store user info in req.session to keep it across requests.
req.session.user = { id: 1, name: 'Alice' };if (req.session.user) { // user is logged in }
req.session.destroy(() => {
// session cleared, user logged out
});This simple NestJS app uses session-based authentication. When you visit /login, it saves user info in the session. Visiting /profile shows the user info if logged in. Visiting /logout clears the session.
import { Module, Controller, Get, Req, Res } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; import * as cookieParser from 'cookie-parser'; import * as session from 'express-session'; import { Request, Response } from 'express'; @Controller() class AuthController { @Get('login') login(@Req() req: Request, @Res() res: Response) { req.session.user = { id: 1, name: 'Alice' }; res.send('Logged in'); } @Get('profile') profile(@Req() req: Request) { if (req.session.user) { return req.session.user; } return 'Not logged in'; } @Get('logout') logout(@Req() req: Request, @Res() res: Response) { req.session.destroy((err) => { if (err) { return res.status(500).send('Error logging out'); } res.send('Logged out'); }); } } @Module({ controllers: [AuthController], }) class AppModule {} async function bootstrap() { const app = await NestFactory.create(AppModule); app.use(cookieParser()); app.use(session({ secret: 'my-secret-key', resave: false, saveUninitialized: false, })); await app.listen(3000); } bootstrap();
Sessions store data on the server, so users can't change their login info directly.
Always use a strong secret key to keep sessions secure.
Session data is temporary and usually expires after some time or when the user logs out.
Session-based authentication keeps user info on the server to track login status.
Configure express-session in NestJS to manage sessions.
Store and check user info in req.session to control access.