Laravel 5 Находчивые маршруты плюс промежуточное ПО

Можно ли добавить промежуточное ПО для всех или некоторых элементов изобретательного маршрута?

Например...

<?php

Route::resource('quotes', 'QuotesController');

Кроме того, если возможно, я хотел бы сделать все маршруты в стороне от index а также show использовать auth промежуточное программное обеспечение. Или это должно быть что-то, что должно быть сделано в контроллере?

6 ответов

Решение

В QuotesController Конструктор вы можете использовать:

$this->middleware('auth', ['except' => ['index','show']]);

Ссылка: Промежуточное ПО контроллера в Laravel 5

Вы можете использовать Route Group в сочетании с концепцией Middleware: http://laravel.com/docs/master/routing

Route::group(['middleware' => 'auth'], function()
{
    Route::resource('todo', 'TodoController', ['only' => ['index']]);
});

В laravel 5.5 с php 7 он не работал для меня с исключением нескольких методов, пока я не написал

Route::group(['middleware' => 'auth:api'], function() {

Route::resource('categories', 'CategoryController', ['except' => 'show,index']);
});

может быть, это поможет кому-то.

ОБНОВЛЕНИЕ ДЛЯ LARAVEL 8.x

веб.php:

      Route::resource('quotes', 'QuotesController');

в вашем контроллере:

      public function __construct()
{
        $this->middleware('auth')->except(['index','show']);
        // OR
        $this->middleware('auth')->only(['store','update','edit','create']);
}

Ссылка: ПО промежуточного слоя контроллера

Искал лучшее решение для Laravel 5.8+.

Вот что я сделал:

Примените промежуточное ПО к ресурсу, кроме тех, к кому вы не хотите применять промежуточное ПО. (Здесь индексировать и показывать)

 Route::resource('resource', 'Controller', [
            'except' => [
                'index',
                'show'
            ]
        ])
        ->middleware(['auth']);

Затем создайте маршруты ресурсов, которые были кроме первого. Так что индексируйте и показывайте.

Route::resource('resource', 'Controller', [
        'only' => [
            'index',
            'show'
        ]
    ]);

Попробуй это

$this->middleware('auth', ['кроме' => ['index','show']]);

Другие вопросы по тегам