2017-09-20 70 views
1

「/ admin」に移動しようとするとこのエラーが発生します。 "/ employee"などの他のルートも正常に動作しています。Laravel 5.3:リダイレクトされた回数が多すぎる

は、ここに私の現在のウェブルート

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\[email protected]')->name('homepage'); 
    Route::get('dashboard', 'frontend\[email protected]')->name('homepage'); 
    ... 
}); 

Route::group(['middleware' => 'auth'], function() { 
    Route::resource('team-manager', 'frontend\TeamManagerController'); 

    Route::resource('badges', 'backend\BadgeController'); 
    Route::get('badges/award/{id?}', 'backend\[email protected]'); 
    Route::post('store_award', 'backend\[email protected]')->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')); 
} 

は、事前にありがとうです!

+0

ロールベースのアクセス制御も処理したい場合は、このパッケージを使用することをお勧めします。 https://github.com/DynamicCodeNinja/RBAC –

答えて

1

問題は、あなたのミドルウェアである:

return $user->role_id == 1 ? redirect('admin') : redirect('employee'); 

あなたは管理者の役割を持っている、とあなたは/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'); 
} 
+0

こんにちは、ありがとうございました。残念ながら、それはまだ動作しません。上記で提案した役割ベースのアクセス制御を実装し、現在動作していないVoyagerパッケージを削除しようとします。ありがとう! – Katherine

+0

私はすでにこの3つのプロジェクトでそのパッケージを使用していました。それは素晴らしいと全くバグは動作しません!多分あなたは何かを逃したでしょう。あなたの問題点を教えてください。 –

+0

それは素晴らしいです! 。ミドルウェアリダイレクタのルートコードを削除しても、私のリダイレクトの問題は解決されません。奇妙な部分は、このプロジェクトが最初にインストールされた私の古いプロジェクトフォルダにあり、ルートは同じコードを持つうまく動作しています。この問題は、新しくクローンされたプロジェクトにのみ表示されます。 – Katherine

関連する問題