В Laravel для авторизации пользователя и предоставления токена, вы можете использовать пакет Passport. Passport - это полноценный пакет для аутентификации API, который позволяет легко добавить аутентификацию через токены в вашу Laravel приложение.
Шаги по добавлению токена для авторизованного пользователя:
1. Установите пакет Passport с помощью Composer, выполнив следующую команду в терминале:
composer require laravel/passport
2. Затем выполните миграции, чтобы создать необходимые таблицы в базе данных:
php artisan migrate
3. Затем выполните команду, чтобы установить ключ шифрования:
php artisan passport:install
4. После установки Passport, вам нужно зарегистрировать ServiceProvider. В файле config/app.php
найдите массив providers
и добавьте следующую строку:
LaravelPassportPassportServiceProvider::class
5. Далее выполняются необходимые настройки в файле config/auth.php
. В массиве guards
замените api
на passport
, чтобы ваше приложение использовало Passport в качестве аутентификационного драйвера:
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],
6. В модели пользователя User
подключите трейт LaravelPassportHasApiTokens
. Этот трейт добавит необходимые методы для работы с токенами API:
use LaravelPassportHasApiTokens; class User extends Authenticatable { use HasApiTokens; ... }
7. Выполните миграции для обновления схемы таблицы пользователей:
php artisan migrate
8. Далее выполняются дополнительные настройки для маршрутов аутентификации. Откройте файл app/Http/Kernel.php
и добавьте следующий middleware в массив $routeMiddleware
:
'auth:api' => LaravelPassportHttpMiddlewareCheckForAnyScope::class,
9. Выполните команду passport:client
для создания клиентского ID и секретного ключа:
php artisan passport:client --password
10. Завершите настройку добавив следующую конфигурацию в файле config/auth.php
:
В массиве providers
добавьте драйвер для аутентификации по токену:
'api' => [ 'driver' => 'passport', 'provider' => 'users', ],
И в массиве guards
добавьте новую защиту для аутентификации по токену:
'api' => [ 'driver' => 'passport', 'provider' => 'users', ],
Теперь вы можете использовать маршрутизацию и контроллеры в вашем API, добавив middleware auth:api
для защиты маршрутов, которые требуют аутентификации. Например:
Route::get('/user', function (Request $request) { return $request->user(); })->middleware('auth:api');
Этот маршрут будет требовать токен аутентификации пользователя.
Теперь, когда пользователь успешно аутентифицирован, вы сможете предоставить токен доступа, используя метод createToken
на экземпляре модели пользователя:
$accessToken = $user->createToken('Token Name')->accessToken;
Токен будет автоматически возвращен в ответе для пользователя.
Это основные шаги по добавлению токена для авторизованного пользователя в Laravel, используя пакет Passport.