Предполагается что вы уже умеете настраивать окружение для запуска проектов Laravel. Я работаю c Laravel Homstead windows 11.
Для начала создаем новый проект:
composer create-project laravel/laravel tokenauth
Устанавливаем laravel/breeze
Laravel Breeze — это минимальная и простая реализация всех функций аутентификации Laravel , включая вход в систему, регистрацию, сброс пароля, проверку электронной почты и подтверждение пароля. Кроме того, Breeze включает простую страницу «профиля», где пользователь может обновить свое имя, адрес электронной почты и пароль.
Слой представления Laravel Breeze по умолчанию состоит из простых шаблонов Blade , стилизованных с помощью Tailwind CSS .
composer require laravel/breeze --dev
php artisan breeze:install
Which Breeze stack would you like to install?
› ● Blade
○ React with Inertia
○ Vue with Inertia
○ API only
php artisan migrate
npm install
npm run dev
Устанавливаем Sanctum
Самые последние версии Laravel уже включают Laravel Sanctum. Однако, если файл вашего приложения composer.json не содержит laravel/sanctum, вы можете следовать инструкциям по установке, приведенным ниже.
composer require laravel/sanctum
Опубликуем файлы конфигурации и миграции Sanctum. Файл конфигурации sanctum будет помещен в каталог config вашего приложения:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
Выполняем миграцию базы данных. Sanctum создаст одну таблицу базы данных, в которой будут храниться токены API (а точнее их Хеш SHA256):
php artisan migrate
Laravel Sanctum сделан для решения двух отдельных проблем:
Во-первых, Sanctum — это простой пакет, который вы можете использовать для выдачи токенов API своим пользователям.
Во-вторых, Sanctum существует для того, чтобы предложить простой способ аутентификации одностраничных приложений (SPA), которым необходимо взаимодействовать с API на базе Laravel.
Нам Sanctum нужен, чтобы выдавать ключи для аутентификации пользователей.
Для начала создаём маршрут, который принимает адрес электронной почты пользователя/имя пользователя, пароль и имя устройства, а затем создаёт новый токен Sanctum. «Имя устройства» - предназначено для информационных целей и может иметь любое значение по вашему желанию.
Создадим файл Http/Controllers/AuthController.php, который будет содержать функцию создания токена.
php artisan make:controller AuthController
В файле проекта routes/api.php прописываем маршрут, по которому будут выдаваться токены:
Route::post('token', [AuthController::class, 'requestToken']);
Для проверки воспользуемся приложением Advanced REST Client by MuleSoft
Получаем Токен в открытом виде, его нужно сохранить и потом использовать для аутентификации в запросах к Api. В таблицу personal_access_tokens записывается Хеш токена.
Создадим маршрут который возвращает нам записи таблицы events:
Route::middleware('auth:sanctum')->get('/',function () {
return Event::get();
});
Маршрут защищен с помощью middleware auth и guard Sanctum.
Для успешной авторизации необходимо в заголовке запроса передать наш токен в поле Authorization "Bearer [Токен в открытом виде]".