2017-02-02 6 views
1

Я создал промежуточное программное обеспечение для проверки базы данных аутентифицированных пользователей и ограничения доступа к ним. Но когда я применяю промежуточное ПО к маршрутам, страница локального хоста падает.Laravel 5.2 custom middleware crashes localhost page

страница локальный не работает

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', 

     ]); 
}); 

Баланс код промежуточного слоя я включил выше и без баланса промежуточного приложение работает отлично. BUt, когда я включаю балансное промежуточное программное обеспечение, он выдает ошибку.

Мой код контроллера

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