Руководство по установке и использованию Laravel Sanctum — примеры и подробное описание


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

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

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

Что такое Laravel Sanctum

Sanctum поддерживает два основных вида аутентификации:

  • Stateful аутентификация: позволяет аутентифицировать пользователя с помощью его учетных данных (логин и пароль) и создать сеанс (session). Sanctum гарантирует, что пользователь останется аутентифицированным между запросами, сохраняя сеанс в зашифрованных куках.
  • Stateless аутентификация: позволяет аутентифицировать пользователя с помощью токена, который передается с каждым запросом в заголовке или параметре запроса. Sanctum создает криптографически безопасный одноразовый токен, который можно использовать для аутентификации пользователя.

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

Установка

Для установки Laravel Sanctum необходимо выполнить следующие шаги:

  • Установить Laravel с помощью Composer, используя команду composer create-project --prefer-dist laravel/laravel название_проекта.
  • Подключить Sanctum пакет, добавив его в файл composer.json проекта: "laravel/sanctum": "^2.10".
  • Обновить зависимости, выполнив команду composer update.
  • Зарегистрировать провайдер Sanctum, добавив его в массив providers в файле config/app.php: Laravel\Sanctum\SanctumServiceProvider::class.
  • Опубликовать конфигурационный файл Sanctum, выполнив команду php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider".
  • Создать таблицы в базе данных для хранения токенов Sanctum, используя миграции: php artisan migrate.

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

Требования к системе

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

  • PHP версии 7.2.5 или выше
  • Composer для установки зависимостей
  • База данных, поддерживаемая Laravel (например, MySQL, PostgreSQL, SQLite)
  • Web-сервер, такой как Apache или Nginx
  • Расширение OpenSSL для шифрования данных
  • Расширение PDO для взаимодействия с базой данных

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

Установка через Composer

Чтобы начать установку, откройте командную строку (терминал) и перейдите в папку вашего проекта.

Затем выполните следующую команду:

composer require laravel/sanctum

Composer загрузит все необходимые файлы и зависимости.

Осталось только добавить провайдер сервиса. Для этого откройте файл config/app.php, найти массив ‘providers’, и добавьте следующую строку в его конец:

Laravel\Sanctum\SanctumServiceProvider::class,

Это регистрирует сервис провайдера, который позволяет Laravel использовать Sanctum.

После этого запустите следующую команду, чтобы переместить миграции и создать таблицу базы данных Sanctum:

php artisan vendor:publish —provider=»Laravel\Sanctum\SanctumServiceProvider»

Также, вы можете добавить ‘Sanctum’ middleware в массив $middlewareGroups в файле app/Http/Kernel.php.

Теперь Laravel Sanctum полностью установлен и настроен в вашем проекте!

Настройка

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

1. Установка Sanctum

Первым шагом является установка библиотеки Laravel Sanctum с помощью Composer:

  • Откройте терминал и перейдите в корневую директорию вашего проекта.
  • Введение команду composer require laravel/sanctum и нажмите Enter.

2. Конфигурация базы данных

Далее нужно настроить базу данных для хранения токенов Sanctum:

  • Откройте файл config/database.php.
  • Отредактируйте параметры вашей базы данных, включая 'driver', 'host', 'database', 'username' и 'password'.

3. Создание таблицы для токенов

Теперь создайте таблицу, в которой будут храниться токены Sanctum:

  • Откройте терминал и введите команду php artisan migrate и нажмите Enter.

4. Настройка маршрутов

Добавьте маршруты, связанные с Sanctum, в файл routes/api.php:

  • Откройте файл routes/api.php.
  • Добавьте следующий код до существующих маршрутов:

use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Route::middleware('auth:sanctum')->group(function () {
// Ваши маршруты
});
Route::middleware('auth:sanctum', EnsureFrontendRequestsAreStateful::class)->post('/logout', function (Request $request) {
$request->user()->currentAccessToken()->delete();
return response()->json(null, 204);
});

Теперь Sanctum будет обрабатывать аутентификацию для ваших маршрутов API.

Поздравляю! Теперь ваш проект настроен для использования Laravel Sanctum. Вы можете начать создавать и использовать токены для аутентификации API.

Настройка базы данных

Перед началом использования Laravel Sanctum необходимо настроить базу данных для вашего приложения. Laravel поддерживает многие известные SQL-базы данных, такие как MySQL, PostgreSQL и SQLite.

Для начала установите драйвер базы данных, который вам нужен, с помощью Composer. Например, для установки драйвера MySQL можно выполнить следующую команду:

composer require doctrine/dbal

После того, как драйвер базы данных установлен, необходимо настроить соединение с БД в файле .env вашего Laravel-приложения. Вам нужно указать параметры для соединения, такие как хост, имя пользователя, пароль и имя базы данных. Например, для настройки соединения с MySQL, ваш файл .env может выглядеть следующим образом:


DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=secret

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

php artisan migrate

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

Теперь ваша база данных настроена и готова к использованию с Laravel Sanctum.

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

Для того чтобы правильно настроить и использовать Laravel Sanctum, требуется выполнить несколько шагов.

1. Установка и настройка пакета Sanctum. Выполните команду composer require laravel/sanctum в корневой директории вашего проекта, чтобы установить пакет. Затем выполните команду php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider" для публикации конфигурационного файла Sanctum.

2. Настройка миграций и запуск миграционных файлов. Sanctum использует свои миграционные файлы для создания таблицы для хранения токенов. Выполните команду php artisan migrate, чтобы создать таблицу. Если вы планируете использовать свою собственную таблицу, укажите это в файле конфигурации.

3. Конфигурация маршрутов. Sanctum предоставляет некоторые маршруты для аутентификации и создания токенов. Вы должны зарегистрировать эти маршруты в файле routes/api.php. Добавьте следующие строки в этот файл:

МетодURIДействие
POST/api/registerApp\Http\Controllers\Auth\RegisteredUserController@store
POST/api/loginApp\Http\Controllers\Auth\AuthenticatedSessionController@store
POST/api/logoutApp\Http\Controllers\Auth\AuthenticatedSessionController@destroy

4. Настройка вашего драйвера аутентификации. По умолчанию Sanctum использует драйвер токенов для аутентификации. Вы должны установить этот драйвер в файле config/auth.php. Установите значение в 'driver' => 'token'.

5. Защита маршрутов. Чтобы защитить маршруты с помощью Sanctum, вы должны применить промежуточное ПО \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class к группе маршрутов, которые вы хотите защитить. Вы можете сделать это в файле app/Http/Kernel.php.

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

Использование

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

1. Регистрация маршрутов аутентификации

Перед тем, как использовать Sanctum, вам необходимо зарегистрировать маршруты аутентификации в вашем файле routes/api.php. Вы можете добавить следующий код:

use Laravel\Sanctum\Http\Controllers\{
CsrfCookieController,
NewAccessTokenController,
DeleteAccessTokenController,
};
Route::group(['middleware' => config('sanctum.middleware', ['api'])], function () {
// Обновление CSRF-токена
Route::get('/sanctum/csrf-cookie', CsrfCookieController::class.'@show');
// Создание нового токена доступа
Route::post('/sanctum/token', NewAccessTokenController::class.'@store');
// Удаление токена доступа
Route::delete('/sanctum/token', DeleteAccessTokenController::class.'@destroy');
});

2. Создание токена доступа

Чтобы создать токен доступа для пользователя, вам необходимо отправить POST-запрос на маршрут /sanctum/token. В запросе вы должны указать адрес электронной почты пользователя и его пароль. Если данные правильные, вы получите ответ с токеном доступа.

3. Аутентификация и авторизация

После получения токена доступа вы можете использовать его для аутентификации пользователей. Для этого вам необходимо добавить заголовок Authorization к вашим запросам с значением Bearer {YOUR_ACCESS_TOKEN}. Например:

GET /api/user
Host: example.com
Authorization: Bearer your-access-token

Теперь Sanctum будет проверять токен доступа и аутентифицировать пользователя.

4. Защита маршрутов

Для защиты ваших маршрутов от неаутентифицированных пользователей, вы можете использовать специальный auth:sanctum middleware в файле routes/api.php. Пример:

Route::get('/api/user', function () {
// Только аутентифицированные пользователи могут получить доступ к этому маршруту
// ...
}))->middleware('auth:sanctum');

Вы можете применять этот middleware к любым маршрутам, которые требуют аутентификации и авторизации.

И это все! Теперь вы знаете, как использовать Laravel Sanctum для аутентификации и авторизации пользователей в вашем проекте. Удачи в кодинге!

Регистрация маршрутов

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

1. Откройте файл routes/api.php в вашем Laravel-приложении.

2. Добавьте необходимые маршруты, которые вы хотите защитить Sanctum, используя методы Route::middleware('auth:sanctum') или Route::middleware('auth:sanctum', 'throttle:api').

Например, чтобы защитить маршрут api/posts с помощью Sanctum, вы можете использовать следующий код:

use App\Http\Controllers\PostController;
use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->get('api/posts', [PostController::class, 'index']);

3. Зарегистрируйте маршруты API в вашем приложении, добавив следующий код в файл app/Providers/RouteServiceProvider.php в методе mapApiRoutes():

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Providers\RouteServiceProvider;
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}

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

Создание системных токенов

Sanctum предоставляет возможность создания системных токенов, которые позволяют выполнять авторизацию от имени системы или сервера. Они могут быть полезны, когда требуется выдавать токены без необходимости действий пользователя. Системные токены особенно полезны для внедрения внутренних эндпоинтов API, аутентификации между сервисами или автоматической аутентификации системных задач.

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

  1. Добавить маршрут для создания системного токена в файле routes/api.php:

use Laravel\Sanctum\Http\Controllers\SystemTokenController;
Route::post('/system-tokens', [SystemTokenController::class, 'store']);
  1. Обновить конфигурацию Sanctum, добавив системные токены в список допустимых токенов в файле config/sanctum.php:

'system_tokens' => [
'expiration' => null,
'limit' => null,
],

В данном примере, системные токены не имеют срока действия или ограничений на количество запросов.

  1. Теперь вы можете создать системный токен, отправив POST-запрос на эндпоинт /system-tokens. Эндпоинт вернет данные нового созданного токена, включая его ID и секретный ключ.

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

Обратите внимание, что системные токены не связаны с каким-либо пользователем, и не подвергаются повторной аутентификации. Будьте осторожны при передаче системных токенов и не делайте их доступными для неавторизованных лиц или публичной видимости.

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

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