Публикации - Laravel

Аутентификация и авторизация - Авторизация в API с помощью Jetstream и Sanctum

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

Для того, чтобы оставить коментарий необходимо зарегистрироваться


Изображения Видео

1. Подключение CKEditor https://artisansweb.net/install-use-ckeditor-laravel/#comments
2. Регистрация и авторизация https://know-online.com/post/laravel-reg
3. Что нового в Laravel 8 https://sergeymukhin.com/blog/chto-novogo-v-laravel-80
4. Авторизация Sanctum <iframe width="560" height="315" src="https://www.youtube.com/embed/MT-GJQIY3EU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>