Что такое laravel api

REST API на Laravel в 100 строк кода

inb4: копипаста из документации

В гайде упор на быстрое развертывание минимального набора для полноценной разработки API в соответствии с best practice, взятыми из документации Laravel 5.7, собранными в одном месте. Писал для себя и коллег как шпаргалку, надеюсь пригодится кому-нибудь еще.

Предварительная настройка

Ставим фреймворк

Удаляем ненужные UI компоненты (vuejs, react)

php artisan preset none

Настраиваем подключение к БД

Приступаем к генерации

Получаем модель, миграцию и контроллер:

Создаем колонки в таблице БД

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

Применяем миграции, выполняя php artisan migrate

Генерируем правила валидации

Выполняем php artisan make:request GameRequest

Для минимизации кода, мы используем конструкцию switch для разных http-глаголов, вместо того, чтобы делать отдельные StoreGameRequest, UpdateGameRequest и т.д.

Собственные варианты описания ошибок

Если нужны собственные тексты ошибок, переопределяем метод messages(), который возвращает массив с переводами каждого правила:

Настраиваем контроллер и описываем бизнес-логику

Далее правим методы:

Если логики много, то её лучше вынести в отдельный слой Service/Repository

Настраиваем модель

Открываем модель app/Http/Game.php и добавляем свойства:

Настраиваем middleware

Чтобы наше приложение всегда возвращало json независимо от переданных заголовков, создаем middleware:

и добавляем в него код:

Регистрируем этот middleware в app/Http/Kernel.php :

Настраиваем роутинг

Открываем routes/api.php и добавляем:

Статичский метод Route::apiResource, в отличие от метода resource, исключает методы edit и create, оставляя только index, show, store, update, destroy.

Этого же можно добиться более очевидной записью:

Теперь, можно посмотреть пути командой php artisan route:list и пользоваться.

Послесловие

Если нужна авторизация, то подойдет стандартный Laravel Passport.

Настраиваем авторизацию Laravel Passport

Добавляем трейт Laravel\Passport\HasApiTokens в модель App\User и вызов Passport::routesmethod в метод boot app/AuthServiceProvider :

В файле config/auth.php меняем драйвер на passport:

Создаем контроллер для авторизации ‘php artisan make:controller Api/AuthController.php`

Добавляем туда код

После этого можно пользоваться методами api/register, api/login, api/logout для авторизации, и закрыть доступ к апи. Для этого нужно обернуть роутинг наших REST контроллеров в middleware:

Послепослесловие:

Тут бы еще сделать функциональные тесты и генерацию документации в swagger, но это немного выходит за рамки scaffold-туториала, так что об этом в другой раз

Источник

Создание и использование RESTful API в Laravel

Что такое API?

API – это Application Programming Interface, это описание способов которыми одна компьютерная программа может взаимодействовать с другой программой.

Что такое REST?

REST – это аббревиатура от REpresentational State Transfer. Этот термин был придуман Роем Филдингом в 2000 году. Это стиль архитектуры для проектирования слабо связанных приложений по протоколу HTTP, который часто используется при разработке веб-сервисов.

REST определяет 6 архитектурных ограничений, которые делают любой веб-сервис истинным RESTful API.

Теперь давайте перейдем к созданию и использованию RESTful API в Laravel.

Потребители нашего API смогут выполнять несколько ограниченных задач. Там будут следующие конечные точки:

Конечные точки API для неаутентифицированного маршрута

Связанные с категорией:

Связанные с сообщениями:

Связанные с автором:

Связано с тегом:

Конечная точка API для аутентифицированного маршрута

Связанные с комментарием:

Вы должны создать ресурсы API, контроллеры и маршруты API для вышеупомянутых конечных точек API.

Шаг 1: Давайте сначала создадим ресурсы API. Для этого выполните следующие действия:

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

Она создаст CategoryResource в app\Http\Resources каталоге.

Шаг 2: Следующее действие заключается в создании необходимых контроллеров. Для этого выполните следующие действия:

Она создаст CategoryApiController в app\Http\Controllers\Api каталоге. Откройте этот файл и запишите методы для выполнения действий.

Здесь вы создали два метода index и posts внутри CategoryApiController.

Тестирование конечных точек API

Чтобы получить все категории вы должны отправить GET запрос по адресу http://127.0.0.1:8000/api/categories

Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel apiRESTful API возвращает ответ

Мы используем Laravel Sanctum для аутентификации и авторизации. Мы выпустим токен API и используем его в Postman для аутентификации запроса.

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

Чтобы использовать токен API, мы запустим команду tinker

php artisan tinker

Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel apiСгенерировать токен доступа

Теперь откройте Postman и сделайте следующее:

В этой статье мы смогли построить и использовать (потребитель был Postman) RESTful API с помощью Laravel. Мы рассмотрели создание ресурсов API, создание контроллера API и протестировали аутентифицированные и Неаутентифицированные маршруты API.

Источник

Создание REST API с аутентификацией

Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

Ищете как создать RESTful API в Laravel? Если да, то я расскажу вам всё поэтапно, как создать полноценный API с аутентификацией с использованием Laravel Passport. API также известен как веб-служба.

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

Если вы не знакомы с Laravel или не знаете, как начать создание API, не беспокойтесь, в этом уроке я шаг за шагом всё объясню. Вам просто нужно выполнить несколько этапов, чтобы получить API для регистрации, входа и работы с товарами (добавление, обновление, удаление).

Шаг 1: Установка Laravel

Поскольку это пошаговый урок, прямо с нуля, то нам нужно сначала установить Laravel. Откройте командную строку и выполните команду:

Шаг 2: Установка Passport

Устанавливаем Passport с помощью менеджера пакетов Composer, запустите команду:

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

Далее, для получения токенов безопасности, нам нужно запустить команду:

Шаг 3: Настройка паспорта

В этом шаге мы должны провести настройку в трех местах: в модели, в сервис-провайдере и в файле конфигурации.

В модели мы добавим класс HasApiTokens,

В AuthServiceProvider мы добавим Passport::routes(),

В файле auth.php мы добавим настройки аутентификации api.

app/User.php

app/Providers/AuthServiceProvider.php

config/auth.php

Шаг 4: Добавляем таблицу товаров и Модель

Теперь нам нужно создать миграцию для таблицы товаров:

После выполнения этой команды вы найдете новый файл в папке database/migrations. Вам нужно вставить в него приведенный ниже код для создания таблицы товаров.

Теперь нужно запустить миграцию:

Таким образом мы создали таблицу «products». Теперь нужно сделать модель Product — создайте файл Product.php в папке app и поместите в него приведенный ниже код:

Шаг 5. Создание маршрутов API

На этом этапе мы создадим маршруты API. Laravel предлагает для записи маршрутов веб-сервисов файл api.php. Давайте добавим новый маршрут к этому файлу.

Шаг 6: Создание файлов Контроллера

В этом шаге мы будем создавать новые контроллеры — BaseController, ProductController и RegisterController. Для них я создал новую папку «API» в папке контроллеров.

app/Http/Controllers/API/BaseController.php

app/Http/Controllers/API/ProductController.php

app/Http/Controllers/API/RegisterController.php

Теперь мы готовы к запуску RESTful API и Passport API. Давайте запустим наш пример — открывайте консоль и вводите команду:

Убедитесь, что API использует следующие заголовки, как указано ниже:

Список адресов с методами

Теперь вы можете запускать вышеприведенные адреса, как на скриншотах:

Вход API:
Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

Регистрация API:
Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

Список товаров API:
Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

Создание товара API:
Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

Показ товара API:
Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

Обновление товара API:
Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

Удаление товара API:
Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

Наш Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel apiТелеграм-канал — следите за новостями о Laravel.

Задать вопросы по урокам можно на нашем форуме.

Источник

Создайте приложения на React и Laravel RESTful Back End: Часть 1, Laravel 5.5 API

Russian (Pусский) translation by Marat Amerov (you can also view the original English article)

В современном веб-приложении серверная сторона ограниченна бекендом через некоторые конечные точки входа API (Application Programming Interface). Клиент отправляет запросы этим конечным точкам, и сервер возвращает ответ. Однако сервер не заботится о том, как клиент выводит представление, что идеально соответствует принципу разделения ответствености. Эта архитектура позволяет разработчикам создавать надежные веб приложения, а также приложения для разных устройств.

В этом руководстве мы будем использовать последнюю версию Laravel версии 5.5 для создания RESTful API. Фронтэнд будет состоять из компонентов, написанных на React. Мы будем создавать поисковое приложение для листинга продуктов. В первой части руководства основное внимание будет уделено концепциям Laravel и бекенду. Давайте начнем.

Введение

Почему Laravel и React?

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

Предварительное условие

Прежде чем приступить к работе, я собираюсь предположить, что у вас есть базовое представление об архитектуре RESTful и о том, как работают конечные точки API. Кроме того, если у вас есть предыдущий опыт в React или Laravel, вы сможете извлечь максимальную пользу из этого руководства.

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

Установка и настройка Laravel проекта

Laravel использует Composer для управления всеми зависимостями. Итак, прежде чем начинать работу с Laravel, загрузите и установите Composer на свой компьютер. Вам также может потребоваться настроить переменную среды path, чтобы Composer был доступен глобально.

Выполните следующую команду для загрузки и установки laravel.

/.composer/vendor/bin в свой путь, вы должны создать новый проект Laravel следующим образом:

Кроме того, вы можете использовать Composer для создания нового проекта без установщика laravel.

Настройка среды

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

Общие сведения о моделях, роутах и контроллерах

Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel apiЧто такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel apiАрхитектура Laravel. Контроллер возвращает ответ, и, следовательно, слой представления не требуется.

Поскольку мы создаем API с использованием Laravel, мы ограничим наше обсуждение моделью и контроллером. Мы рассмотрим наши варианты создания представления во второй части этого руководства.

Роутинг

Когда сервер получает HTTP-запрос, Laravel пытается сопоставить его с роутом, зарегистрированным внутри любого из файлов роутинга. Все файлы роутинга находятся внутри соответсвующего каталога. route/web.php содержит роуты для веб-интерфейса, тогда как route/api.php содержит роуты для API. Роуты, зарегистрированные в api.php, будут иметь префикс /api (как в localhost:3000/api). Если вам нужно изменить это поведение, вы должны перейти в класс RouteServiceProvider в /app/Providers/RouteServiceProvider.php и внести туда изменения.

Поскольку мы создаем приложение для списка продуктов, здесь указаны конечные точки API и HTTP-методы, связанные с этими конечными точками.

Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel apiЧто такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel apiGET, POST, PUT и DELETE являются наиболее часто используемымы действиями REST

Роутер позволяет объявлять роуты для ресурса вместе с HTTP-методами, которые нацелены на этот ресурс. Вот пример файла роутинга, который возвращает некоторые жестко кодированные данные.

routes/api.php

Если вы хотите проверить, что роуты работают должным образом, вы должны использовать тулинг, например POSTMAN или curl.

Модель продукта

Eloquent ORM, входящий в состав Laravel, обеспечивает красивую, простую реализацию ActiveRecord для работы с вашей базой данных. Каждая таблица базы данных имеет соответствующую «Модель», которая используется для взаимодействия с этой таблицей. Модели позволяют запрашивать данные из ваших таблиц, а также вставлять новые записи в таблицу.
— Laravel Docs

Что относительно определения схемы базы данных? Миграция Laravel’а позаботится об этом. У Artisan есть команда миграции, которая позволяет вам определять вашу схему и постепенно обновлять ее на более позднем этапе. Давайте создадим модель и миграции для сущьности Product.

database/migrations/timestamp_create_products_table.php

Чтобы выполнить ожидающие миграции, вы должны выполнить следующую команду:

Но мы оставим все на своих местах и продолжим пользоваться соглашениями. Сгенерированная модель продукта находится внутри каталога app/. Хотя класс модели может казаться пустым, он оснащен различными методами построения запросов, которые можно использовать для запросов к базы данных. Например, вы можете использовать Product::all() для извлечения всех продуктов или Product::find(1) для получения определенного продукта с id 1.

Модели Laravel имеют встроенный механизм защиты от уязвимости массового назначения. Свойство fillable используется, чтобы объявить имена атрибутов, который можно смело присвоить.

app/Product.php

Заполнение базы данных

Laravel позволяет вам заполнить базу данных разработки и продакшена фиктивными данными, которые затем можно использовать для тестирования конечных точек API. Вы можете создать класс seed, выполнив следующую команду Artisan.

Сгенерированные файлы сидов будут помещены в каталог database/seeds.

database/seeds/ProductsTableSeeder.php

Выполните команду artisan db:seed для заполнения базы данных.

Вернемся к routes/api.php и добавим недостающие части.

routes/api.php

Контроллер

В файле роутинга в настоящее время размещается логика роутинга и обработки запросов. Мы можем переместить логику обработки запросов в класс контроллера, чтобы наш код был лучше организован и более читабельным. Давайте сначала сгенерируем класс контроллера.

app/HTTP/Controllers/ProductsController.php

routes/api.php

Откройте POSTMAN, и конечные точки продукта должны работать. Убедитесь, что заголовок Accept: application/json включен.

Валидация и обработка исключений

Если вы перейдете к несуществующему ресурсу, это то, что вы увидите.

Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel apiЧто такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

app/Exceptions/Handler.php

Laravel также позволяет нам валидировать входящие HTTP-запросы с помощью набора правил валидации и автоматически возвращать ответ в JSON, если валидация не прошла. Логика проверки будет помещена внутри контроллера. Объект Illuminate\Http\Request предоставляет метод validate, который мы можем использовать для определения правил валидации. Давайте добавим несколько валидаций в методе store.

app/HTTP/Controllers/ProductsController.php

Заключение

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

Для тех из вас, кто только начинает работать с Laravel или хочет расширить свои знания, найти примеры сайтов или приложений, у нас есть множество материалов, которые вы можете изучить на Envato Market.

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

Источник

API аутентификация (Passport)

Введение

В Laravel можно легко настроить аутентификацию через обычные формы входа, но что насчёт API? API обычно использует токены для аутентификации пользователей и не сохраняет состояние сессии между запросами. В Laravel реализована простая API аутентификация с помощью Laravel Passport, который предоставляет полную реализацию сервера OAuth2 для вашего приложения в считанные минуты. Passport создан на основе сервера League OAuth2, созданного Алексом Билби.

Предполагается, что вы уже знакомы с OAuth2. Если вы ничего не знаете о OAuth2, рекомендуем ознакомиться с основной терминологией и возможностями OAuth2 самостоятельно перед прочтением этой статьи.

Установка

Сначала установите Passport через менеджер пакетов Composer:

Затем зарегистрируйте сервис-провайдер Passport в массиве PHP providers в файле настроек config/app.php :

Сервис-провайдер Passport регистрирует свой собственный каталог миграций БД в фреймворке, поэтому вам надо мигрировать вашу БД после регистрации провайдера. Миграции Passport создадут таблицы, необходимые вашему приложению для хранения клиентов и токенов доступа:

Быстрое знакомство с фронтендом

Чтобы использовать Vue-компоненты Passport, вам необходимо использовать JavaScript-фреймворк Vue. Эти компоненты также используют CSS-фреймворк Bootstrap. Но даже если вы не используете эти фреймворки, компоненты будут хорошим образцом для вашей собственной реализации фронтенда.

Для публикации Vue-компонентов Passport используйте Artisan-команду sh vendor:publish :

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

Настройка

Срок действия токенов

Выдача токенов доступа

Большинство разработчиков знакомы с OAuth2 по работе с кодами авторизации. При использовании кодов авторизации клиентское приложение перенаправляет пользователя на ваш сервер, где разрешается или запрещается его запрос на получение токена на доступ к клиенту.

Управление клиентами

Команда sh passport:client

JSON API

Но вам надо будет дополнить Passport JSON API своим собственным фронтендом, чтобы предоставить пользователям панель для управления их клиентами. Далее мы рассмотрим все конечные точки API для управления клиентами. Для удобства мы используем Vue для демонстрации создания HTTP-запросов к конечным точкам.

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

GET /oauth/clients

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

POST /oauth/clients

Этот маршрут используется для создания новых клиентов. Ему необходимы следующие данные: название клиента ( PHP name ) и URL переадресации ( PHP redirect ). Этот URL будет использован для переадресации пользователя после подтверждения или отклонения запроса авторизации.

После создания клиента ему будут выданы ID клиента и секрет клиента. Эти значения будут использоваться при запросе токенов доступа у вашего приложения. Маршрут создания клиента вернёт новый экземпляр клиента:

PUT /oauth/clients/

Этот маршрут используется для изменения клиентов. Ему необходимы следующие данные: название клиента ( PHP name ) и URL переадресации ( PHP redirect ). Этот URL будет использован для переадресации пользователя после подтверждения или отклонения запроса авторизации. Маршрут вернёт обновлённый экземпляр клиента:

DELETE /oauth/clients/

Этот маршрут используется для удаления клиентов:

Запрос токенов

Переадресация для авторизации

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

Подтверждение запроса

Конвертирование кодов авторизации в токены доступа

Обновление токенов

Если ваше приложение выдаёт краткосрочные токены доступа, пользователям будет необходимо обновлять свои токены доступа с помощью токена обновления, который предоставляется при выдаче токена доступа. В этом примере мы используем HTTP-библиотеку Guzzle для обновления токена:

Токены предоставления пароля

Предоставление пароля OAuth2 позволяет вашим собственным клиентам, таким как мобильное приложение, получить токен доступа с помощью e-mail/логина и пароля. Это позволяет вам безопасно выдавать токены доступа своим собственным клиентам, не требуя от пользователя проходить через весь процесс авторизационной переадресации OAuth2.

Создание клиента предоставления пароля

Запрос токенов

Запомните, по умолчанию токены долговременны. Но вы можете настроить максимальное время действия токенов доступа при необходимости.

Запрос всех прав

Неявное предоставление токенов

Неявное предоставление похоже на предоставление авторизационного кода, но токен возвращается клиенту без обмена авторизационным кодом. Это предоставление наиболее часто используется для JavaScript или мобильных приложений, когда клиентские учётные данные не могут надёжно храниться. Для включения предоставления вызовите метод PHP enableImplicitGrant () в AuthServiceProvider :

После включения предоставления разработчики смогут использовать ID своего клиента для запроса токенов доступа у вашего приложения. Запрашивающее приложение должно сделать запрос переадресации по маршруту /oauth/authorize вашего приложения вот так:

Токены предоставления учётных данных клиента

Предоставление учётных данных клиента подходит для аутентификации машина-машина. Например, вы можете использовать это предоставление в запланированной задаче, которая выполняет обслуживающие действия через API. Для получения токена сделайте запрос к конечной точке oauth/token :

Персональные токены доступа

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

Создание клиента персонального доступа

Управление токенами персонального доступа

JSON API

В Passport также есть JSON API для управления персональными токенами доступа. Вы можете дополнить его своим фронтендом, предоставив пользователям панель для управления токенами персонального доступа. Далее мы рассмотрим все конечные точки API для управления токенами персонального доступа. Для удобства мы используем Vue для демонстрации создания HTTP-запросов к конечным точкам.

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

GET /oauth/scopes

Этот маршрут возвращает все права, определённые для вашего приложения. Вы можете использовать этот маршрут для получения списка прав, которые пользователь может назначить персональному токену доступа:

GET /oauth/personal-access-tokens

Этот маршрут возвращает все персональные токены доступа, которые создал пользователь. Это особенно полезно для получения списка всех токенов пользователя, чтобы он мог отредактировать или удалить их:

POST /oauth/personal-access-tokens

Этот маршрут создаёт новые персональные токены доступа. Ему необходимы следующие данные: название токена ( PHP name ) и права ( PHP scopes ) для него:

DELETE /oauth/personal-access-tokens/

Этот маршрут удаляет персональный токен доступа:

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

С помощью посредников

Passport содержит защитника аутентификации, который будет проверять токены доступа во входящих запросах. После настройки защитника api на использование драйвера passport вам остаётся только указать посредника auth:api для всех маршрутов, которые требуют корректный токен доступа:

Передача токена доступа

При вызове маршрутов, защищённых с помощью Passport, пользователи API вашего приложения должны указать свой токен доступа как токен Bearer в заголовке Authorization своего запроса. Например, при использовании HTTP-библиотеки Guzzle:

Права токена

Определение прав

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

Назначение прав токенам

При запросе кодов авторизации

При выдаче персональных токенов доступа

Проверка прав

Проверка всех прав

Посредник scopes можно назначить на маршрут для проверки того, что токен доступа входящего запроса имеет все перечисленные права:

Проверка на любое право

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

Проверка прав экземпляра токена

Когда авторизованный токеном доступа запрос поступил в ваше приложение, у вас всё ещё есть возможность проверить, есть ли у токена определённое право, методом PHP tokenCan () на аутентифицированном экземпляре User :

Использование вашего API с помощью JavaScript

При создании API бывает чрезвычайно полезно иметь возможность использовать ваш собственный API из вашего JavaScript-приложения. Такой подход к разработке API позволяет вашему приложению использовать тот же API, который вы предоставляете всем остальным. Один и тот же API может быть использован вашим веб-приложением, мобильными приложениями, сторонними приложениями и любыми SDK, которые вы можете опубликовать в различных менеджерах пакетов.

Обычно, если вы хотите использовать свой API из вашего JavaScript-приложения, вам необходимо вручную послать токен доступа в приложение и передавать его с каждым запросом в ваше приложение. Однако, Passport содержит посредника, который может обработать это для вас. Вам надо только добавить посредника CreateFreshApiToken в вашу группу посредников web :

Этот посредник будет прикреплять cookie laravel_token к вашим исходящим откликам. Этот cookie содержит зашифрованный JWT, который Passport будет использовать для аутентификации API-запросов из вашего JavaScript-приложения. Теперь вы можете делать запросы в API вашего приложения, не передавая токен доступа в явном виде:

Если вы используете другой JavaScript-фреймворк, вам надо убедиться, что он настроен на отправку этого заголовка с каждым исходящим запросом.

События

Passport создаёт события при выдаче токенов доступа и обновлении токенов. Вы можете использовать эти события для удаления или отмены других токенов доступа в вашей БД. Вы можете прикрепить слушателей к этим событиям в EventServiceProvider вашего приложения:

Комментарии (6)

Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

Я чего-то тут не понимаю или это действительно так. Неужели любому клиенту, который попросит те или иные права, они ему так просто присваиваются. Т.е. если любой клиент захочет права админа, он отправляет на регистрационный сервер ‘scope’ ⇒ ‘place-admin’, и все он админ. Это бред какой-то или я чего-то не понял.

Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

Запросить можно любые права, но утверждать их потребуется отдельно. Они не выдаются автоматически.

Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

Пишу API для мобильного приложения и сразу возникло несколько вопросов.
1. Passport создаёт большое количество web маршрутов. Значит, они будут доступны и через мое API. Нужно ли OAuth сервер, коим является Passport, держать отдельно от API?
2. Что если я не хочу, чтобы клиенты мобильного приложения могли создавать других OAuth клиентов. Как ограничить это действие?

Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

1.Auth сервер и создаётся для предоставления Api внешним сервисам, для аутентификации и взаимодействия с ними.
В вашем проекте, кто то создаёт клиентское приложение, и с помощью вашего api взаимодействует с ним, скажем с помощью passport вы проверяете права внешних сервисов к вашим методам api. Теоретически вы можете разместить api отдельно, но стоит учитывать например дополнительные запросы и т д.
Так же можно переопределить все маршруты passport.

2.Не совсем понял вопрос. Если вы хотите запретить через api, то на запросы с мобильного приложения можете добавить заголовок или генерировать какой нибудь ключ, который отвечает 100%, что запрос сделан из телефона.

Что такое laravel api. Смотреть фото Что такое laravel api. Смотреть картинку Что такое laravel api. Картинка про Что такое laravel api. Фото Что такое laravel api

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *