Trung BìnhNestJS iconNestJS

Session vs JWT — khi nào dùng cái nào trong NestJS?

JWT (Stateless): token mang đủ thông tin, server không cần lưu state. Phù hợp:
- Microservices và distributed systems
- Mobile apps (localStorage/SecureStorage)
- Stateless REST APIs
- Cross-domain authentication

Sessions (Stateful): server lưu session data (DB hoặc Redis), client chỉ giữ session ID trong cookie. Phù hợp:
- Traditional web apps với server-side rendering
- Cần revoke session ngay lập tức (banking, admin)
- Không muốn expose user data trong token

NestJS Session setup với express-session + Redis:

typescript
app.use(session({
  store: new RedisStore({ client: redisClient }),
  secret: process.env.SESSION_SECRET,
  resave: false,
  saveUninitialized: false,
  cookie: { secure: true, httpOnly: true, maxAge: 86400000 },
}));

Pitfall JWT: không thể revoke trước khi hết hạn trừ khi maintain blacklist (làm mất đi lợi thế stateless).

Pitfall Session: cần sticky sessions hoặc centralized store (Redis) khi scale horizontally.

Xem toàn bộ NestJS cùng filter theo level & chủ đề con.

Mở danh sách NestJS