Использование политик с маршрутами apiResource - PullRequest
0 голосов
/ 15 мая 2018

В настоящее время я пишу API REST Laravel 5.6.Теперь я хочу защитить свои конечные точки:

У каждого пользователя в моем приложении есть роль.Исходя из этого, пользователь должен иметь возможность доступа к некоторым конечным точкам и в противном случае должен получить ошибку 403.Для этого я хотел бы использовать Policies, поскольку при использовании в качестве промежуточного программного обеспечения они могут авторизовать действия до того, как входящий запрос достигнет моего маршрута или контроллера.

Я объявляю свои конечные точки следующим образом:

Route::apiResource('me', 'UserController');

Моя проблема сейчас в том, что если я хочу использовать Policies в качестве промежуточного программного обеспечения, я должен указать (HTTP) метод, подобный этому middleware('can:update,post').Как мне это сделать, когда я использую apiResource в своем объявлении маршрута?

Кстати: в настоящее время я написал FormRequest для каждого метода (что является болью) и выполняю там авторизацию.Можно ли просто return true в методе authorize после переключения на Policies middleware?

1 Ответ

0 голосов
/ 15 мая 2018

Вы можете определить группы маршрутов , маршруты с общим поведением (промежуточное ПО, префикс и т. Д.).

Должно работать следующее:

Route::middleware('can:update,post')->group(function () {
    Route::apiResource('me', 'UserController');
    //more routes
});

Вытакже можно добавлять префиксы к маршрутам:

Route::middleware('can:update,post')->group(function () {
    Route::prefix('users')->group(function () {
        Route::apiResource('me', 'UserController'); //Translated to ex: /users/me
        Route::prefix('books')->group(function () {
            Route::apiResource('{book}', 'UserController'); //Translated to ex: /users/me/book_1
        });
    });
});

PS: я раньше не использовал ресурсы, но он должен выполнять свою работу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...