| Особенность | На основе сеанса | На основе токенов (без гражданства) |
|---|
| Серверное хранилище | Обязательно (например, Redis, DB) | Нет |
| Масштабируемость | Нужны закрепленные сеансы или магазин | Высокая масштабируемость |
| Клиентское хранилище | печенье | Токен (заголовок или файл cookie) |
| Отзыв | Немедленно (удалить сеанс) | Harder (токен черного списка) |
| Требуется защита CSRF | Да | Если на основе файлов cookie |
| Используется в | Веб-приложения | API, SPA, мобильные приложения |
Пример сеанса:
app.use(session({
secret: 'secret',
resave: false,
saveUninitialized: false
}));
Пример токена:
const token = jwt.sign({ userId }, secret, { expiresIn: '1h' });
Итог
Ключевой вывод для интервью: каковы основные различия между аутентификацией на основе сеанса и аутентификацией без сохранения состояния?