我创建了一个中间件来检查经过身份验证的用户的数据库,并限制他们访问路由。但是当我将中间件应用到路由时,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'));
}
答案 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