Аутентификация с Laravel Sanctum
Выпускайте и проверяйте токены API с помощью Sanctum для SPA и мобильных клиентов
«Аутентификация с Laravel Sanctum» — бесплатный урок PHP Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.
Что такое Sanctum?
Laravel Sanctum предоставляет простую систему аутентификации на основе токенов для SPA и мобильных клиентов. Она поддерживает как токены API, так и аутентификацию на основе сеансов для собственных SPA.
Установка Sanctum
Установите и настройте Sanctum.
$ composer require laravel/sanctum
$ php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
$ php artisan migrateВыдача токенов
Создайте персональный токен доступа для пользователя после проверки его учетных данных.
<?php
Route::post("/login", function (Request $request) {
$request->validate(["email" => "required", "password" => "required"]);
$user = User::where("email", $request->email)->first();
if (!$user || !Hash::check($request->password, $user->password)) {
throw ValidationException::withMessages([
"email" => ["The provided credentials are incorrect."],
]);
}
$token = $user->createToken("mobile-app")->plainTextToken;
return response()->json(["token" => $token]);
});Трейт HasApiTokens
Добавьте трейт HasApiTokens в модель User, чтобы включить управление токенами.
<?php
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
}Защита маршрутов
Используйте промежуточное ПО auth:sanctum для защиты маршрутов API.
<?php
// routes/api.php
Route::middleware("auth:sanctum")->group(function () {
Route::get("/user", fn(Request $r) => $r->user());
Route::apiResource("posts", PostController::class);
});Отправка токена
Клиенты отправляют токен в заголовке Authorization как токен Bearer.
# HTTP header:
Authorization: Bearer 1|AbCdEf1234567890...Области действия токенов (возможности)
Назначайте токенам возможности, чтобы ограничить действия, которые они могут выполнять.
<?php
// Create token with abilities:
$token = $user->createToken("mobile", ["read:posts", "write:comments"])->plainTextToken;
// Check ability:
if ($user->tokenCan("write:comments")) {
// allowed
}Отзыв токенов
Удаляйте отдельный токен или все токены (выход со всех устройств).
<?php
// Revoke current token (logout):
$request->user()->currentAccessToken()->delete();
// Revoke all tokens (logout everywhere):
$request->user()->tokens()->delete();Истечение срока действия токенов
Задавайте срок действия токенов в config/sanctum.php. Токены проверяются с учетом last_used_at и периода действия.
// config/sanctum.php
"expiration" => 60 * 24 * 7, // 7 days in minutesАутентификация SPA
Для SPA на том же домене Sanctum может использовать аутентификацию на основе сеанса вместо токенов. Сначала вызовите /sanctum/csrf-cookie, затем выполните обычный вход.
Sanctum и Passport
Sanctum: простые токены API и аутентификация SPA. Passport: полноценный сервер OAuth2 с кодами авторизации, учетными данными клиента и токенами обновления. Начните с Sanctum и переходите на Passport только при необходимости OAuth2.
Итоги
Sanctum выдает токены Bearer для аутентификации API. Добавьте HasApiTokens в модель User. Защитите маршруты с помощью auth:sanctum. Отзывайте токены при выходе. Используйте возможности, чтобы ограничить разрешения.
Быстрая проверка
Как клиент добавляет токен Sanctum в запросы API?
Часто задаваемые вопросы
Урок «Аутентификация с Laravel Sanctum» бесплатный?
Да — полный текст урока «Аутентификация с Laravel Sanctum» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Аутентификация с Laravel Sanctum»?
Выпускайте и проверяйте токены API с помощью Sanctum для SPA и мобильных клиентов Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать PHP Academy?
Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Аутентификация с Laravel Sanctum»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке PHP Academy?
Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Маршруты API и ресурсные контроллеры
- Ресурсы API и ответы JSON
- Аутентификация с Laravel Sanctum
- Ограничение частоты запросов и версионирование API