Аутентификация определенных методов контроллера в Laravel


Есть в основном два способа использования auth промежуточный слой аутентифицировать маршруты в Ларавеле.

Вы бы либо …

  • Прикрепить auth промежуточное ПО для самого маршрута вроде так.
Route::get('profile', function () {
    // Only authenticated users may enter...
})->middleware('auth');

Или

  • Если вы используете контроллеры, вы можете вызывать метод промежуточного программного обеспечения из конструктора контроллера, а не прикреплять его непосредственно в определении маршрута.
public function __construct()
{
    $this->middleware('auth');
}

Здесь, в вышеупомянутом подходе, auth промежуточное программное обеспечение будет применено к каждому из методов контроллера. Что если вы хотите применить промежуточное программное обеспечение только для определенных методов? У Laravel есть положение для этого также.

С помощью except и only параметры

Путем предоставления except и only варианты к middleware Метод в качестве второго аргумента, можно выбрать, какие методы контроллера будут связаны с аутентификацией.

Вот как вы можете использовать only вариант,

public function __construct()
{
    $this->middleware('auth', ('only' => ('delete', 'edit')));
}

Как вы можете видеть здесь, вы можете предоставить массив, содержащий все методы, которые вы хотите аутентифицировать. Остальные методы будут работать без аутентификации.

Точно так же, вот как вы можете использовать except вариант,

public function __construct()
{
    $this->middleware('auth', ('except' => ('index', 'show')));
}

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