2016-07-02 13 views
1

私はlaravel 5.2の複数のテーブル(ユーザ、管理)の認証機能を使用しています。ミドルウェアの機能以外はすべて正常に動作しています。デフォルトの '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('/'); 
    } 

私はそれがないコントローラのコンストラクタで「認証」を使用していた作品および対応する方法が呼び出されます。私がやっていることや間違っていることは何ですか?

+0

は、たぶん私はあなたが塗装している絵について何かが欠けていますが、私はあなたが同じファイルに二回handleメソッドを定義することができるとは思いません。 –

+1

どのメソッドもAuthenticate.php middlwareにあり、その他は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('/'); 
    } 
関連する問題