В Laravel для авторизации пользователя и предоставления токена, вы можете использовать пакет Passport. Passport - это полноценный пакет для аутентификации API, который позволяет легко добавить аутентификацию через токены в вашу Laravel приложение.
Шаги по добавлению токена для авторизованного пользователя:
- Установите пакет Passport с помощью Composer, выполнив следующую команду в терминале:
composer require laravel/passport
- Затем выполните миграции, чтобы создать необходимые таблицы в базе данных:
php artisan migrate
- Затем выполните команду, чтобы установить ключ шифрования:
php artisan passport:install
- После установки Passport, вам нужно зарегистрировать ServiceProvider. В файле
config/app.php
найдите массивproviders
и добавьте следующую строку:
LaravelPassportPassportServiceProvider::class
- Далее выполняются необходимые настройки в файле
config/auth.php
. В массивеguards
заменитеapi
наpassport
, чтобы ваше приложение использовало Passport в качестве аутентификационного драйвера:
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],
- В модели пользователя
User
подключите трейтLaravelPassportHasApiTokens
. Этот трейт добавит необходимые методы для работы с токенами API:
use LaravelPassportHasApiTokens; class User extends Authenticatable { use HasApiTokens; ... }
- Выполните миграции для обновления схемы таблицы пользователей:
php artisan migrate
- Далее выполняются дополнительные настройки для маршрутов аутентификации. Откройте файл
app/Http/Kernel.php
и добавьте следующий middleware в массив$routeMiddleware
:
'auth:api' => LaravelPassportHttpMiddlewareCheckForAnyScope::class,
- Выполните команду
passport:client
для создания клиентского ID и секретного ключа:
php artisan passport:client --password
- Завершите настройку добавив следующую конфигурацию в файле
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.