Laravel 5.2自定义中间件崩溃了localhost页面

时间:2017-02-02 12:04:37

标签: laravel laravel-5.2

我创建了一个中间件来检查经过身份验证的用户的数据库,并限制他们访问路由。但是当我将中间件应用到路由时,localhost页面崩溃了。

  

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' => 'settingsController@noBalance',
        'as' => 'no_balance',

        ]);
});

Balance是我上面包含的中间件代码,没有平衡中间件应用程序正常工作。当我包含余额中间件时它会抛出错误。

我的控制器代码

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

2 个答案:

答案 0 :(得分:1)

你的问题在于:

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

            Route::get('/no_balance',[
        'uses' => 'settingsController@noBalance',
        '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' => 'settingsController@noBalance',
        'as' => 'no_balance',

        ]);
});

答案 1 :(得分:-1)

我使用它并且它有效。我希望它对你有所帮助。而不是return redirect('no_balance');我使用它:abort(403,'Unauthorized action.'); 它在views / errors / 403

中加载403视图