Ответ
- Cookie-based Auth
Сервер создает сессию и отправляет cookie с session ID. Пример:
// Серверная часть (Express)
app.post('/login', (req, res) => {
req.session.userId = user.id; // Сессия создается
res.send('Logged in');
});
- Token-based Auth (JWT)
Сервер генерирует токен, клиент хранит его (обычно в localStorage). Пример:
// Клиент
localStorage.setItem('token', 'eyJhbGci...');
// Запросы с заголовком
headers: { 'Authorization': 'Bearer ' + token }
-
OAuth/OAuth2
Делегирование авторизации через провайдеров (Google, GitHub). Используется для SSO. -
Basic Auth
Логин/пароль в заголовке (base64-encoded). Устаревший, небезопасный без HTTPS. -
API Keys
Статичный ключ в заголовке или URL. Используется для сервер-серверного взаимодействия.
Нюансы:
- JWT не требует сессий, но сложен с инвалидацией.
- Cookies защищены
HttpOnlyиSecure, но уязвимы к CSRF. - OAuth сложен в настройке, но удобен для пользователей.