. Я изо всех сил пытаюсь полностью понять, как промежуточное программное обеспечение работает в Laravel 5+. У меня есть контроллер для пользователей, которым я хочу разрешить доступ администратора ко всем функциям через промежуточное программное обеспечение, а затем разрешить менеджерам доступ только к нескольким функциям. В настоящее время конструктор выглядит, как это в верхней части UserControllerLaravel 5.2 - Ограничение доступа в контроллере. Конструирование для двух групп пользователей с использованием промежуточного программного обеспечения.
$this->middleware('admin');
$this->middleware('manager', ['only', [
'store',
'profile',
'profileUpdate'
]]);
Промежуточное программное обеспечение для каждого заключается в следующем:
public function handle($request, Closure $next)
{
if (!Auth::check()) {
return redirect()->guest('/auth/login');
}
if (Session::get('is_admin') === 1) {
return $next($request);
}
return Redirect::to('/auth/login');
}
и менеджер:
public function handle($request, Closure $next)
{
if (!Auth::check()) {
return redirect()->guest('/auth/login');
}
if (Session::get('is_manager') === 1) {
return $next($request);
}
return Redirect::to('/auth/login');
}
Они оба перечисленных в Kernal.php под защищенным $ routeMiddleware.
Поэтому я бы хотел, чтобы менеджеры имели доступ к функции «магазин», чтобы они могли сохранять новых пользователей в системе, но когда я использую свое промежуточное программное обеспечение, показанное в верхней части этого сообщения, оно просто отправляет как администраторов, так и менеджеров вернуться к маршруту /.
Может ли кто-нибудь помочь объяснить, что за исключением и только в промежуточном программном обеспечении внутри конструктора и почему один, похоже, отменил другой? Приветствия.