Как написать API для авторизации?
DOM и браузер
API для авторизации включает эндпоинты: регистрация, логин (выдача токенов), refresh (обновление), логаут (отзыв), текущий пользователь (me). Использует хеширование паролей, JWT/сессии, безопасные cookie.
Основные эндпоинты
Регистрация
POST /auth/register
Body: { email, password, name }
→ создать пользователя (пароль хешируется), вернуть токены/подтверждениеЛогин
POST /auth/login
Body: { email, password }
→ проверить пароль → { accessToken } + refresh в HttpOnly cookieОбновление токена
POST /auth/refresh
(refresh из HttpOnly cookie)
→ { accessToken } (новый)Логаут
POST /auth/logout
→ отозвать refresh, очистить cookieТекущий пользователь
GET /auth/me
Authorization: Bearer <token>
→ данные пользователяДетали реализации
Хеширование паролей
Никогда не хранить пароли в открытом виде — bcrypt/Argon2:
const hash = await argon2.hash(password);Токены
- Access (короткий JWT) — в ответе, клиент в памяти.
- Refresh (длинный) — в
HttpOnly,Secure,SameSitecookie.
Безопасность
- Rate limiting (против брутфорса).
- Валидация ввода.
- HTTPS.
- Проверка прав (авторизация) на защищённых эндпоинтах.
- Ротация refresh, возможность отзыва.
Middleware
Проверка access-токена на защищённых роутах:
const payload = jwt.verify(token, SECRET);
req.user = payload;Коротко для собеседования
API авторизации: POST /auth/register (регистрация, хеширование пароля bcrypt/Argon2), POST /auth/login (проверка → access token + refresh в HttpOnly cookie), POST /auth/refresh (новый access), POST /auth/logout (отзыв), GET /auth/me (текущий пользователь). Главное: хеширование паролей, JWT (короткий access + refresh), rate limiting, HTTPS, middleware проверки токена, авторизация на защищённых роутах.