Я использую функцию аутентификации нескольких таблиц (пользователь, администратор) в laravel 5.2 для использования двух таблиц: одна для пользователей, а другая для администраторов. Все работает правильно, кроме функций промежуточного программного обеспечения. По умолчанию «auth» (Authenticate.php) не работает, и я создаю собственный «auth.super_admin» (SuperAdminMiddleware.php) для проверки того, что пользователь является ли администратор и результат одинаковыми. Вот мой файл auth.php
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admins' => [
'driver' => 'session',
'provider' => 'admins'
]
],
Вот промежуточное ПО Authenicate и метод SuperAdminMiddleware:
Authenticate.php
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('login');
}
}
return $next($request);
}
SuperAdminMiddleware.php
public function handle($request, Closure $next)
{
if(\Auth::guard('admins')->check())
{
return $next($request);
}
return redirect('/');
}
Поэтому, когда я использую auth в конструкторе контроллера, он не работает, и вызывается соответствующий метод. Что не так я делаю или упускаю?