2016-04-26 14 views
2

私はユーザーのフロントエンドなしでCMSを作った。 (私がテストして正常に動作しますLaravel隔離管理者ログイン

public function isAdmin() 
    { 
     if ($this->roles->first()->name == 'Administrator') { 
      return true; 
     }else return false; 
    } 

:私はUserモデルでisAdmin()方法を行っている唯一の管理者パネルがアクティブになっている、と私は、ログインから管理者ではない人を制限したい

を。フィードバック)。

Route::auth();外のすべてはミドルウェアで保護されています

public function handle($request, Closure $next) 
    { 
     if(Auth::user()->isAdmin()){ 
      return redirect('user'); 
     }else return redirect('login'); 
    } 

しかし、私が持っている問題があることである:カーネルで

Route::group(['middleware' => ['auth', 'admin']], function() { 
    ... 
}); 

私が登録している「管理者」ミドルウェア、そしてそれはですハンドル方法があります私はERR_TOO_MANY_REDIRECTSを取得し、何かが正常に動作しませんか?なぜ誰が知っていますか?

EDIT:

管理者ユーザのために働く
public function handle($request, Closure $next) 
    { 
     if(Auth::user()->isAdmin()){ 
      return $next($request); 
     }else return redirect('login'); 
    } 

が、他のために:

ロジックは、ミドルウェアは、各要求は、ユーザにリダイレクトされることをトリガし、私はそれを変更されたときにことを示唆していますユーザーはリダイレクトされませんが、私はERR_TOO_MANY_REDIRECTSをもう一度受け取ります

+0

あなたが貼りでした"php artisan route:list"の出力 –

+0

巨大です...私は多くのモデルとAPIとフロントエンドルートを持っています。どのルートに興味がありますか? – Norgul

+0

ログインルート(GET) –

答えて

0

私はRedirectIfAuthenticatedが家にリダイレクトされているので問題を起こしていることを知っています)また、ミドルウェアでotected、その後、ミドルウェアは、ログインするためにそれをリダイレクトされ、それがルートから外れたことがないので、私の解決策が開始されたセッションを打破するためにユーザをログアウトしました:

public function handle($request, Closure $next) 
    { 
     if(Auth::user()->isAdmin()){ 
      return $next($request); 
     }else{ 
      Auth::logout(); 
      return redirect('login'); 
     } 
    } 
関連する問題