Php Laravel 5.3:重定向您的次数太多错误
尝试导航到“/admin”时遇到此错误。其他途径,如“/employee”工作正常 以下是我目前的网站路线Php Laravel 5.3:重定向您的次数太多错误,php,laravel,laravel-5.3,Php,Laravel,Laravel 5.3,尝试导航到“/admin”时遇到此错误。其他途径,如“/employee”工作正常 以下是我目前的网站路线 Auth::routes(); /* Voyager Routes */ Route::group(['prefix' => 'admin'], function () { Voyager::routes(); ... }); /* Badge App Routes - All the dashboard routes for managers, employees and HR
Auth::routes();
/* Voyager Routes */
Route::group(['prefix' => 'admin'], function () {
Voyager::routes();
...
});
/* Badge App Routes - All the dashboard routes for managers, employees and HRs are defined here */
Route::group(['middleware' => 'auth', 'prefix' => 'employee'], function () {
Route::get('/', 'frontend\DashboardController@index')->name('homepage');
Route::get('dashboard', 'frontend\DashboardController@index')->name('homepage');
...
});
Route::group(['middleware' => 'auth'], function () {
Route::resource('team-manager', 'frontend\TeamManagerController');
Route::resource('badges', 'backend\BadgeController');
Route::get('badges/award/{id?}', 'backend\BadgeController@award');
Route::post('store_award', 'backend\BadgeController@storeAward')->name('store_award');
});
/* User Redirector - Based on user role */
Route::group(['middleware' => ['redirector']], function () {
Route::get('/');
Route::get('login');
});
这是我的中间件重定向器
public function handle($request, Closure $next){
if (!Auth::guest()) {
$user = User::find(Auth::id());
// TODO: fix static id below
return $user->role_id == 1 ? redirect('admin') : redirect('employee');
}
return redirect(route('voyager.login'));
}
提前谢谢你 问题出在您的中间件中:
return $user->role_id == 1 ? redirect('admin') : redirect('employee');
您具有管理员角色,并且您也在/admin
页面中。然后,中间件会一次又一次地将您重定向到/admin
最好检查用户是否不在/admin
或/admin/*
相关路由中,然后将其重定向到admin
if($user->role_id == 1) {
//check if user is in /admin or /admin related routes.
return ($request->is('/admin') or $request->is('/admin/*')) ? $next($request) : redirect('admin');
} else {
redirect('/employee');
}
如果您想处理基于角色的访问控制,我建议您使用这个包。你好,谢谢你的帮助。但不幸的是,它仍然不起作用。我将尝试实现您上面建议的基于角色的访问控制,并删除当前不起作用的Voyager包。谢谢我已经在我的前三个项目中使用了这个包。它工作得很好,一点错误都没有!也许你错过了什么。请分享你的问题所在。太好了。即使我删除了中间件重定向器的路由代码,我的重定向问题仍然存在。奇怪的部分是在我的旧项目文件夹中,这个项目是第一次安装的,路由工作正常,有相同的代码。这个问题只出现在新克隆的项目中。因此,Voyager::routes()可能有问题。最好通过其github问题页面进行搜索。