Laravel Sanctum: как выпустить токены и защитить свои API

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

Метод 1: токены личного доступа
Laravel Sanctum предлагает удобный способ выдачи токенов личного доступа. Эти токены связаны с конкретным пользователем и могут использоваться для аутентификации запросов API от имени этого пользователя. Вот пример того, как выдать токен личного доступа:

use App\Models\User;
use Illuminate\Http\Request;
Route::middleware('auth:sanctum')->get('/tokens', function (Request $request) {
    $user = $request->user();
    $token = $user->createToken('My Token')->plainTextToken;
    return ['token' => $token];
});

Метод 2: токены API
Помимо токенов личного доступа, Laravel Sanctum поддерживает токены API. Токены API обычно используются для аутентификации, когда нет конкретного пользовательского контекста. Вот пример того, как выпустить токен API:

use Illuminate\Http\Request;
use Laravel\Sanctum\Sanctum;
Route::middleware('auth:sanctum')->get('/tokens', function (Request $request) {
    Sanctum::actingAs(
        null, // No specific user context
        ['my-scope'] // Optional: define scopes for the token
    );
    $token = $request->bearerToken();
    return ['token' => $token];
});

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

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
Route::middleware('auth:sanctum')->get('/tokens', function (Request $request) {
    $user = $request->user();
    $token = $user->createToken('My Token', ['my-scope'])
        ->expiresAt(Carbon::now()->addDays(7))
        ->plainTextToken;
    // Revoke the token
    $user->tokens()->where('id', $token->id)->delete();
    return ['token' => $token];
});

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

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