Для аутентификации пользователя с использованием Laravel Sanctum, вам потребуется следовать нескольким простым шагам.
1. Установка Laravel Sanctum
Установите Laravel Sanctum, выполнив следующую команду в терминале вашего проекта:
composer require laravel/sanctum
2. Настройка маршрутов API
В файле routes/api.php
добавьте маршруты, необходимые для аутентификации:
use LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful; Route::middleware([EnsureFrontendRequestsAreStateful::class])->group(function () { // Ваши маршруты API });
3. Настройка аутентификации
В файле app/Providers/EventServiceProvider.php
добавьте следующие строки кода:
use IlluminateSupportFacadesEvent; use IlluminateAuthEventsRegistered; use LaravelSanctumEventsAccessTokenCreated; protected $listen = [ Registered::class => [ // Ваши слушатели событий ], AccessTokenCreated::class => [ // Ваши слушатели событий ], ];
Далее, в файле app/Providers/AuthServiceProvider.php
, в методе boot
, добавьте следующий контроль доступа:
use LaravelSanctumSanctum; public function boot() { $this->registerPolicies(); Sanctum::allowCookieSessions(); Sanctum::allowTokenCan('role:admin'); // Настройка разрешений для пользователя с определенной ролью }
4. Создание аутентификационного токена
Теперь вы можете создать токен для аутентификации пользователя на основе его учетных данных. Ваш контроллер или маршрут может выглядеть примерно так:
use IlluminateHttpRequest; use IlluminateSupportFacadesAuth; use LaravelSanctumEventsAccessTokenCreated; public function createToken(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { event(new AccessTokenCreated(Auth::user())); return response()->json(['token' => $request->user()->currentAccessToken()]); } return response()->json(['message' => 'Аутентификация не удалась'], 401); }
После успешной аутентификации пользователь будет иметь доступ к токену аутентификации, который может быть использован для прохождения аутентификации на вашем API.
5. Защита маршрутов
Чтобы защитить маршруты, чтобы они были доступны только аутентифицированным пользователям, используйте мидлваре Sanctum:
use LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful; Route::middleware([EnsureFrontendRequestsAreStateful::class, 'auth:sanctum'])->group(function () { // Ваши защищенные маршруты });
Теперь только аутентифицированные пользователи с действующим токеном Sanctum смогут получить доступ к вашим защищенным маршрутам.
Это основные шаги для правильной аутентификации пользователя с помощью Laravel Sanctum. Однако вам также следует ознакомиться с документацией Laravel Sanctum для получения более подробных сведений о его использовании и возможностях.