SPA-аутентификация с помощью Laravel Sanctum – это процесс аутентификации для приложений на основе одностраничной архитектуры (SPA), использующих Laravel Sanctum как механизм аутентификации.
Laravel Sanctum – это библиотека аутентификации, разработанная для Laravel фреймворка, которая предоставляет надежный и безопасный способ аутентификации пользователей в SPA-приложениях. Она использует механизм токенов для аутентификации пользователей на сервере и обеспечивает безопасность передачи данных между клиентом и сервером.
Чтобы настроить SPA-аутентификацию с помощью Sanctum, необходимо выполнить следующие шаги:
Шаг 1: Установка Sanctum
Сначала установите Laravel Sanctum, запустив следующую команду в корневой папке вашего проекта:
composer require laravel/sanctum
Шаг 2: Настройка Sanctum
После установки Sanctum, добавьте провайдера сервиса и сконфигурируйте пакет в файле config/app.php
:
'providers' => [ // ... LaravelSanctumSanctumServiceProvider::class, ], 'aliases' => [ // ... 'Sanctum' => LaravelSanctumSanctum::class, ]
Затем запустите следующую команду для публикации конфигурационного файла Sanctum:
php artisan vendor:publish --provider="LaravelSanctumSanctumServiceProvider"
После этого в файле config/sanctum.php
вы можете настроить Sanctum, установив параметры, соответствующие вашему проекту.
Шаг 3: Миграции базы данных
Laravel Sanctum использует миграции для создания необходимых таблиц в базе данных. Запустите следующую команду для выполнения миграций:
php artisan migrate
Шаг 4: Определение аутентифицируемой модели
Установите модель для аутентификации, добавив следующую строку в файле config/auth.php
:
'guard' => [ // ... 'sanctum' => [ 'driver' => 'sanctum', 'provider' => 'users', ], ],
Шаг 5: Создание токена
Чтобы создать токен Sanctum для аутентифицированного пользователя в вашем SPA-приложении, выполните следующий код на сервере:
use IlluminateSupportFacadesHash; Route::post('/login', function (Request $request) { $user = User::where('email', $request->email)->first(); if (! $user || ! Hash::check($request->password, $user->password)) { return response()->json(['message' => 'Invalid credentials'], 401); } $token = $user->createToken('SPA Token')->plainTextToken; return response()->json(['token' => $token]); });
Этот метод проверяет учетные данные пользователя и создает токен Sanctum. Затем он отправляет ответ с токеном в формате JSON.
Шаг 6: Использование токена для аутентификации
После создания токена Sanctum в вашем SPA-приложении вы можете использовать его для аутентификации запросов API. Для этого добавьте заголовок Authorization
с значением Bearer {token}
к запросам API.
Пример использования токена Sanctum для запроса к защищенному маршруту:
axios.get('/api/protected-route', { headers: { 'Authorization': `Bearer ${token}` } });
При обработке таких запросов Laravel будет автоматически аутентифицировать пользователя и предоставлять доступ к защищенному маршруту.
Это шаги, необходимые для настройки SPA-аутентификации с помощью Laravel Sanctum. После выполнения этих шагов ваше SPA-приложение будет взаимодействовать с Laravel API с помощью безопасного и надежного механизма аутентификации.