Session: server lưu trạng thái phiên trong store; client chỉ giữ session id trong cookie; mỗi request server tra store để xác thực. → Thu hồi tức thì, nhưng stateful (cần shared store khi scale nhiều instance).
Token (JWT): server ký token chứa claim, client gửi kèm mỗi request; server chỉ verify chữ ký mà không tra DB (stateless). → Dễ scale, hợp API/microservice/mobile, nhưng khó thu hồi trước hạn (phải blacklist, hoặc dùng access token sống ngắn + refresh).
Cookie-session hợp app render server truyền thống; JWT hợp SPA/mobile gọi API cross-service.