PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Как написать 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, SameSite cookie.

Безопасность

  • 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 проверки токена, авторизация на защищённых роутах.

Другие вопросы раздела