2017-02-02 3 views
1

ミドルウェアを作成して、認証されたユーザーのデータベースを確認し、ルートへのアクセスを制限しました。しかし、ミドルウェアをルートに適用すると、localhostページがクラッシュします。Laravel 5.2カスタムミドルウェアがローカルホストのページをクラッシュする

localhostのページが

localhostは動作していないはあなたにあまりにも多くの時間をリダイレクト。

public function handle($request, Closure $next) 
{ 

    $user = \Auth::user(); 

     if (($user->plan == 'ip') && ($user->balance >= 1299)) { 

      return $next($request); 

     } 
      return redirect('no_balance'); 


} 

これは

Route::group(['middleware'=>['auth','client','balance']],function(){ 

      Route::get('/no_balance',[ 
     'uses' => '[email protected]', 
     'as' => 'no_balance', 

     ]); 
}); 

バランスは、私が上記に含まれているとのバランスミドルウェアなしでアプリケーションが正常に動作するミドルウェアコードである私のルートです。私がバランスミドルウェアを含めると、エラーがスローされます。

私のコントローラのコード

public function noBalance(){ 
    return view('no_balance')->with(compact('user_profiles','user_info')); 
} 
+1

「no_balance」のあなたのルートは何をのように見えるのでしょうか?このエラーは、リダイレクトループに巻き込まれていることを示唆しています。 – James

+0

質問を親切に編集しました –

答えて

1

あなたの問題はここにある:

Route::group(['middleware'=>['auth','client','balance']],function(){ 

      Route::get('/no_balance',[ 
     'uses' => '[email protected]', 
     'as' => 'no_balance', 

     ]); 
}); 

あなたbalanceミドルウェアはif (($user->plan == 'ip') && ($user->balance >= 1299))をチェックしていると、彼らがこれを失敗した場合、あなたは、それらを同じミドルウェアによって保護されている'no_balance'にリダイレクトします。

したがって、ミドルウェアが一定の周期で終了し、'no_balance'にリダイレクトされた後、再度ミドルウェアがリダイレクトされます。

この問題を修正するには、ちょうどこのルートから'no_balance'ミドルウェアを削除:

Route::group(['middleware'=>['auth','client']],function(){ 

      Route::get('/no_balance',[ 
     'uses' => '[email protected]', 
     'as' => 'no_balance', 

     ]); 
}); 
-1

私はこれを使用し、それが動作します。それがあなたを助けることを願っています代わりにreturn redirect('no_balance');の私はこれを使用します。abort(403,'Unauthorized action.');ビューで403ビューをロード /エラー/ 403

関連する問題