2016-07-02 7 views
1

Я использую функцию larvel 5.2 multi table (user, admin) auth для использования двух таблиц для пользователей и для администраторов. Все работает нормально, кроме функций промежуточного программного обеспечения. По умолчанию «auth» (Authenticate.php) не работает, и я делаю пользовательский «auth.super_admin» (SuperAdminMiddleware.php) для проверки пользователя, является ли администратор и результат одинаковым. Вот мой auth.php файлLaravel 5.2 аутентификация нескольких таблиц и промежуточное программное обеспечение вместе не работают должным образом

'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» в конструкторе контроллера она не работает и соответствующий метод вызывается. Что плохого я делаю или пропадаю?

+0

Может быть, я что-то о картине вы картины не хватает, но я не верю, что можно определить метод ручки дважды в одном файле , –

+1

В средстве аутентификации Authenticate.php ни один метод не находится в файле SuperAdminMiddleware.php. @JeremyAnderson –

ответ

1

На самом деле я решил проблему. Вот решение

Authenticate.php 


public function handle($request, Closure $next, $guard = null) 
    { 
    /* 
    |-------------------------------------------------------------------------- 
    | Authenticate Middleware 
    |-------------------------------------------------------------------------- 
    | 
    | This middleware is for checking whether user is from user table . 
    | and authenticated. 
    | 
    */ 
     if (!Auth::user()) { 
      return redirect('/'); 
     }else 
     { 
      return $next($request); 

     } 
    } 

SuperAdminMiddleware.php

/* 
    |-------------------------------------------------------------------------- 
    | Authenticate Middleware(Super Admin check) 
    |-------------------------------------------------------------------------- 
    | 
    | This middleware is for checking whether user is from admin table 
    | and super_admin . 
    | 
    */ 
    public function handle($request, Closure $next) 
    { 


     if (\Auth::guard('admins')->user()) { 
      if(\Auth::guard('admins')->user()->type == 'super_admin') 
       return $next($request); 

      return redirect('/'); 
     } 
     return redirect('/'); 
    }