Найти в Дзене

Laravel 10 Sanctum аутентификация по токену.

Предполагается что вы уже умеете настраивать окружение для запуска проектов 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. Однако, если фа
Оглавление

Предполагается что вы уже умеете настраивать окружение для запуска проектов 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

-2

Получаем Токен в открытом виде, его нужно сохранить и потом использовать для аутентификации в запросах к Api. В таблицу personal_access_tokens записывается Хеш токена.

Создадим маршрут который возвращает нам записи таблицы events:

Route::middleware('auth:sanctum')->get('/',function () {
return Event::get();
});

Маршрут защищен с помощью middleware auth и guard Sanctum.

Для успешной авторизации необходимо в заголовке запроса передать наш токен в поле Authorization "Bearer [Токен в открытом виде]".

-3