Политика Laravel с проверкой разрешений Spatie дает 403 для запроса API учетных данных клиента - PullRequest
0 голосов
/ 13 июня 2019

Я использую Laravel Policy и проверяю разрешения, созданные с помощью пакета Spatie Laravel-Permissions. Для вызова API с учетными данными клиента authorizeResource () в конструкторе Controller возвращает 403. Если этот параметр удален, он возвращает ожидаемые результаты.

NpoPolicy.php

public function view(User $user, Npo $npo)
{
    return $user->can('npo.view');
}

NpoController.php

public function __construct()
{
    $this->authorizeResource(Npo::class);
}

api.php

Route::middleware('client')->resource('/npo', 'NpoController');

Запрос API
URL: https://my -app.dev / api / npo / 1
Метод: GET

Когда я закомментирую метод authorizeResource в конструкторе контроллера, я получаю ожидаемый результат:

{
    "npos": {
        "id":1,
        "name":"Bailey and Sons",
        "contact_person_name":"Mr. Davion Mayert",
        "created_at":"2019-06-13 17:39:25",
        "updated_at":"2019-06-13 17:39:25"
    }
}

Мне известно, что для политики Laravel требуется объект модели User, и поэтому в моем случае политика возвращает ответ 403. Существует ли общая практика обработки запросов API (с учетными данными клиента) в этих случаях?

1 Ответ

0 голосов
/ 05 июля 2019

Вы пропустили второй параметр в функции authorizeResource, поэтому в файле NpoController.php измените authorizeResource на:

$this->authorizeResource(Npo::class, 'npo');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...