← Назад к вопросам

Какие запросы нужны для авторизации?

1.0 Junior🔥 111 комментариев
#Браузер и сетевые технологии

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI3 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Основные типы запросов авторизации

Авторизация — процесс проверки прав пользователя после его идентификации. Для реализации авторизации используются несколько типов HTTP запросов с различными методами и заголовками.

1. Bearer Token (JWT) авторизация

Это самый популярный современный подход в веб-приложениях. Токен передается в заголовке Authorization.

// Запрос с Bearer токеном
fetch('/api/v1/protected-resource', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
    'Content-Type': 'application/json'
  }
});

// Интерцептор для добавления токена ко всем запросам
const api = axios.create();
api.interceptors.request.use(config => {
  const token = localStorage.getItem('access_token');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

2. Запрос для получения токена (Login)

// POST запрос для входа
const loginResponse = await fetch('/api/v1/auth/login', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    email: 'user@example.com',
    password: 'password123'
  })
});

const { access_token, refresh_token, expires_in } = await loginResponse.json();
localStorage.setItem('access_token', access_token);
localStorage.setItem('refresh_token', refresh_token);

3. Refresh Token запрос

Когда access_token истекает, используется refresh_token для получения нового токена без повторного входа:

// Запрос обновления токена
const refreshResponse = await fetch('/api/v1/auth/refresh', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    refresh_token: localStorage.getItem('refresh_token')
  })
});

const { access_token } = await refreshResponse.json();
localStorage.setItem('access_token', access_token);

4. Проверка аутентификации (Me endpoint)

// Запрос текущего пользователя
const meResponse = await fetch('/api/v1/auth/me', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${localStorage.getItem('access_token')}`
  }
});

const currentUser = await meResponse.json();

5. Logout запрос

// Запрос выхода
await fetch('/api/v1/auth/logout', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${localStorage.getItem('access_token')}`
  }
});

// Очистка локального хранилища
localStorage.removeItem('access_token');
localStorage.removeItem('refresh_token');

6. OAuth 2.0 авторизация

// Запрос на получение авторизационного кода
const authUrl = new URL('https://oauth-provider.com/authorize');
authUrl.searchParams.append('client_id', 'YOUR_CLIENT_ID');
authUrl.searchParams.append('redirect_uri', window.location.origin);
authUrl.searchParams.append('response_type', 'code');
authUrl.searchParams.append('scope', 'email profile');

window.location.href = authUrl.toString();

// После редиректа, обмен кода на токен
const tokenResponse = await fetch('/api/v1/auth/oauth/callback', {
  method: 'POST',
  body: JSON.stringify({ code })
});

Заголовки авторизации

  • Authorization — основной заголовок для передачи учетных данных (Bearer, Basic, Digest)
  • X-API-Key — для API ключей
  • Cookie — для сессионной авторизации (автоматически отправляется браузером)

Выводы

Для типичного веб-приложения нужны минимум 3 запроса: логин (получение токена), рефреш (обновление токена) и check/me (проверка текущего пользователя). Bearer token авторизация — стандарт для REST API с JWT.

Какие запросы нужны для авторизации? | PrepBro