Дисциплины - Серверные технологии разработки

Разработка backend API - Авторизация API

Маршруты авторизации
Контроллер авторизации
Правила валидации запросов авторизации

Laravel Sanctum (https://laravel.com/docs/9.x/sanctum) предоставляет простую систему аутентификации для SPA (одностраничных приложений), мобильных приложений и API на основе токенов. Sanctum позволяет каждому пользователю вашего приложения генерировать несколько токенов API для своей учетной записи. Токены определяют доступы пользователей к определенным методам.

Модуль Jetstream включает в себя авторизацию с помощью Sunctum. Если вы уже устанавливали Jetstream, то Sunctum устанавливать не надо.

Для включения функции api токен, необходимо раскомментировать соответствующую запись в опции конфигурации features в файле конфигурации config/jetstream.php приложения:

'features' => [
    Features::profilePhotos(),
    Features::api(),
    Features::teams(),
],

Каждый запрос, сделанный к приложению Jetstream, даже к аутентифицированным маршрутам в файле routes/web.php, будет связан с объектом токена Sanctum. И мы можем определить, имеет ли связанный токен данное разрешение, используя метод tokenCan, предоставленный трейтом Laravel\Sanctum\HasApiTokens.

Это свойство HasApiTokens автоматически применяется к модели приложения App\Models\User во время установки Jetstream. Обычно метод tokenCan вызывается в контроллерах приложения, компонентах Livewire или политиках авторизации.

Например, таким образом, мы можем создать токен для пользователя:

$user = User::first();
$user->create_token('developer_access')->plainTextToken;

Свойство plainTextToken содержит созданный токен.

Использование токена в middleware:

 Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

Т.е. если мы сейчас переходя по ссылке /user не передадим в запросе значение токена (свойство plainTextToken), то будет ошибка доступа.

Удаление токенов пользователя:

$user->tokens()->delete();

Еще одна полезная возможность - это создание токена на определенные действия:

 $user->createToken('token-name', ['category_list']);

Используем токен так:

if ($user->tokenCan('category_list')) {
    //
}

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться
80422 БГУИР
10421-10422 ИИТ БГУИР
10423 БГУИР
20421 БГУИР
30421 БГУИР
30423 БГУИР
Вопросы