Laravel 7 - использовать Middleware и кроме файла маршрута - PullRequest
0 голосов
/ 28 апреля 2020

Я использую Laravel 7 для проекта API, я создал промежуточное программное обеспечение JWT и хочу применить его ко всем моим маршрутам, кроме 2.

Пока у меня есть в моем routes/api.php:

Route::prefix('v1')->group(function () {
    Route::get('ping', 'Api\Ping\PingController@ping');

    // auth routes
    Route::group(['prefix' => 'login/'], function () {
        Route::post('login', 'Api\Auth\AuthController@login');

        Route::group(['middleware' => 'jwt:api'], function() {
           Route::get('me', 'Api\Auth\AuthController@me');
           Route::post('refreshToken', 'Api\Auth\AuthController@refresh');
           Route::post('logout', 'Api\Auth\AuthController@logout');
        });
    });

    Route::group(['middleware' => 'jwt:api'], function() {
        Route::resource('users', 'Api\User\UserController');
        // my other routes protected .....

Мне не нравится этот подход, потому что мне нужно скопировать промежуточное ПО.

Я попробовал этот подход:

Route::group(
    [
        'middleware' => ['jwt:api', ['except' => 'login/login']],
        'prefix' => 'v1/',
    ], function() {

Но у меня есть эта ошибка:

Недопустимый тип смещения в isset или пусто

Возможно ли это? Я хочу сгруппировать все в моем файле маршрута.

1 Ответ

0 голосов
/ 28 апреля 2020

Возможные решения:

  1. Вы можете передать дополнительные параметры в промежуточное ПО через точки и проверить промежуточное ПО, чтобы не использовать пропущенные маршруты
  2. Также вы можете перезаписать промежуточное программное обеспечение и добавить некоторое свойство \ константу с массивом исключений, как в промежуточном программном обеспечении csrf
  3. Реализовать возможность передачи в ядре Laravel, кроме массива, как в вашем примере, и сделать PR для фреймворка github

  4. Оставь, как ты сделал

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