Как использовать Laravel Sanctum для авторизации вашего SPA


SPA (Single-Page Application) — это платформенно-независимое веб-приложение, которое загружает только одну веб-страницу и динамически обновляет ее без перезагрузки. При разработке таких приложений встает вопрос: как обеспечить безопасность пользователей и защитить доступ к API?

В этой статье мы рассмотрим, как использовать Laravel Sanctum для авторизации вашего SPA. Laravel Sanctum — это библиотека для аутентификации и авторизации пользователей в Laravel приложениях. Она предоставляет простые и удобные инструменты для создания токенов аутентификации и защиты доступа к API.

Использование Laravel Sanctum позволяет вам создавать токены аутентификации для ваших пользователей, которые могут быть использованы для авторизации запросов к вашему API. Sanctum также предоставляет мощную систему прав доступа, позволяющую определить, какие пользователи или роли могут выполнять определенные действия в вашем приложении.

Что такое Laravel Sanctum?

Одним из главных преимуществ Laravel Sanctum является его простота использования. Он предоставляет мощный механизм аутентификации на основе токенов, который позволяет защитить ваше SPA от несанкционированных запросов.

Основное преимущество использования Laravel Sanctum заключается в том, что он обеспечивает безопасность вашего приложения, без необходимости вводить пароли пользователей на каждый запрос. Вместо этого Sanctum использует токены, которые генерируются для каждого пользователя и связываются с его сеансом.

Sanctum также предлагает удобные методы для аутентификации и проверки предоставленных токенов, что упрощает процесс создания безопасных запросов к вашему API.

При использовании Laravel Sanctum вы можете создавать защищенные маршруты для вашего SPA, которые будут доступны только авторизованным пользователям. Это позволяет предотвратить несанкционированный доступ и улучшить общую безопасность вашего приложения.

Кроме того, Sanctum поддерживает множество методов аутентификации, включая аутентификацию на основе cookies, токенов и маркеров доступа. Это дает вам гибкость выбора наиболее подходящего для вас метода в зависимости от ваших потребностей.

В целом, Laravel Sanctum является мощным инструментом для обеспечения безопасности вашего SPA, предоставляя простые и эффективные методы аутентификации для вашего API.

Установка Laravel Sanctum

Перед началом установки Laravel Sanctum необходимо убедиться, что у вас установлены PHP версии 7.2.5 и выше и Composer.

  1. Откройте терминал или командную строку и перейдите в корневую директорию вашего проекта Laravel.
  2. Выполните команду в терминале для установки Laravel Sanctum:
composer require laravel/sanctum

По мере установки Laravel Sanctum, Composer будет загружать все необходимые зависимости.

  1. После завершения установки Laravel Sanctum, добавьте сервис-провайдер в файле config/app.php. Откройте файл и найдите массив providers. Добавьте следующую строку:
'providers' => [// ...Laravel\Sanctum\SanctumServiceProvider::class,],
  1. Выполните команду в терминале для публикации конфигурационных файлов Sanctum:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

Эта команда скопирует необходимые файлы конфигурации в папку config вашего проекта.

  1. Наконец, выполните следующую команду для создания таблицы токенов в базе данных:
php artisan migrate

Теперь Laravel Sanctum установлен и настроен для вашего проекта Laravel!

Шаги по установке Laravel Sanctum

Для установки Laravel Sanctum следуйте этим простым шагам:

  1. Убедитесь, что у вас установлен Composer на вашем сервере.
  2. Откройте терминал и перейдите в корневую папку вашего проекта Laravel.
  3. Запустите команду «composer require laravel/sanctum» для установки пакета Laravel Sanctum.
  4. После установки выполните команду «php artisan vendor:publish —provider=»Laravel\Sanctum\SanctumServiceProvider»» для публикации конфигурационных файлов Sanctum.
  5. После этого выполните команду «php artisan migrate» для создания таблицы базы данных, необходимой для работы Sanctum.
  6. Включите использование внутреннего инструмента Laravel для генерации API-ключей, добавив ‘abilities’ => [‘*’] к массиву $middlewareGroups в файле app/Http/Kernel.php.
  7. Теперь Laravel Sanctum готов к использованию в вашем проекте!

Настройка Laravel Sanctum

Для использования Laravel Sanctum в вашем SPA необходимо выполнить несколько шагов настройки:

1.Установка Laravel Sanctum
composer require laravel/sanctum

2. После установки Sanctum вам нужно опубликовать файлы конфигурации. Выполните следующие команды:

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

3. Миграция базы данных

php artisan migrate

4. Затем вы должны добавить две middleware-группы в файле app/Http/Kernel.php для защиты API-маршрутов Sanctum:

use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;'api' => [EnsureFrontendRequestsAreStateful::class,'throttle:api',\Illuminate\Routing\Middleware\SubstituteBindings::class,],'sanctum' => [EnsureFrontendRequestsAreStateful::class,'throttle:api',\Illuminate\Routing\Middleware\SubstituteBindings::class,],
5.Затем вам нужно добавить Sanctum в список посредников в файле app/Http/Middleware/Kernel.php:
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,

6. На этом этапе вы должны выполнить команду passport:install для создания ключей шифрования Sanctum:

php artisan sanctum:install

7. Добавьте использование HasApiTokens трейта в модели пользователя User.php:

use Laravel\Sanctum\HasApiTokens;class User extends Authenticatable{use HasApiTokens, Notifiable;// Остальной код модели пользователя...}

Теперь вам нужно выполнить несколько шагов для настройки аутентификации Sanctum в вашем SPA.

Конфигурация Laravel Sanctum

Для использования Laravel Sanctum в вашем SPA, вам необходимо настроить несколько вещей:

  1. Установите пакет Sanctum через Composer, запустив команду composer require laravel/sanctum.
  2. Затем необходимо выполнить миграцию базы данных, чтобы создать таблицы, необходимые для Sanctum. Вы можете это сделать, запустив команду php artisan migrate.
  3. После миграции вы должны добавить трейт HasApiTokens к модели пользователя в вашем приложении. Это добавит необходимые методы для генерации и проверки токенов Sanctum. Например:
use Laravel\Sanctum\HasApiTokens;class User extends Authenticatable{use HasApiTokens;}

4. Далее вам нужно зарегистрировать посредник Sanctum в файле app/Http/Kernel.php. Добавьте \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class в массив $middlewareGroups['web']. Например:

'web' => [...\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,],

5. Наконец, вы должны определить конфигурацию Sanctum. Создайте файл config/sanctum.php, скопируйте содержимое файла vendor/laravel/sanctum/config/sanctum.php и вставьте его в новый файл. Затем включите маршруты Sanctum в файле routes/api.php, добавив следующий код:

use Laravel\Sanctum\Http\Controllers\CsrfCookieController;use Laravel\Sanctum\Http\Controllers\AuthenticatedSessionController;use Laravel\Sanctum\Http\Controllers\ConfirmablePasswordController;use Laravel\Sanctum\Http\Controllers\TwoFactorAuthenticatedSessionController;use Laravel\Sanctum\Http\Controllers\NewPasswordController;use Laravel\Sanctum\Http\Controllers\PasswordResetLinkController;use Laravel\Sanctum\Http\Controllers\RegisteredUserController;use Laravel\Sanctum\Http\Controllers\UnauthenticatedSessionController;use Laravel\Sanctum\Http\Controllers\VerifyEmailController;Route::middleware('auth:sanctum')->get('/user', function (Request $request) {return $request->user();});...

После выполнения всех этих шагов вы должны быть готовы использовать Laravel Sanctum для авторизации вашего SPA.

Использование Laravel Sanctum для авторизации SPA

В первую очередь, вам потребуется установить Laravel Sanctum с помощью Composer:

composer require laravel/sanctum

Затем вы можете опубликовать миграции и настроить таблицу для хранения токенов:

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"php artisan migrate

После настройки Sanctum вы сможете добавить маршруты аутентификации в ваш файл маршрутов:

use Laravel\Sanctum\Http\Controllers\AuthorizedAccessTokenController;Route::post('/login', [AuthorizedAccessTokenController::class, 'store']);Route::post('/logout', [AuthorizedAccessTokenController::class, 'destroy']);Route::post('/logout', [AuthorizedAccessTokenController::class, 'destroy']);Route::middleware('auth:sanctum')->group(function () {// Ваши защищенные маршруты});

После этого вы можете отправить POST-запрос на ваш роут «/login» для аутентификации пользователя:

axios.post('/login', {email: '[email protected]',password: 'password'}).then(response => {console.log(response.data);}).catch(error => {console.log(error.response.data);});

В ответе вы получите токен, который вы можете использовать для аутентификации в будущих запросах к защищенным маршрутам. Вы можете добавить этот токен в заголовок запроса в следующем формате:

axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;

В вашем SPA вы можете создать проверку аутентификации, чтобы ограничить доступ к некоторым разделам или функциям только зарегистрированным пользователям. Вы можете использовать Laravel Sanctum, чтобы проверить, аутентифицирован ли пользователь, и предоставить или запретить доступ к соответствующим частям интерфейса приложения.

Таким образом, использование Laravel Sanctum позволяет вам легко реализовать авторизацию в вашем SPA с помощью токенов. Теперь вы можете создавать безопасные и защищенные веб-приложения, которые будут удовлетворять потребностям ваших пользователей.

Добавить комментарий

Вам также может понравиться