Найти тему

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. Однако, если файл вашего приложения 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