страница не направлена должным образом в laravel
Я использую несколько ролей, используя laravel.Я иду по ссылке https://dev.to/kaperskyguru/multiple-role-based-authentication-in-laravel-30pc.But когда я регистрируюсь на своем сайте laravel. он говорит: "эта страница не работает.localhost направлял вас слишком много раз. мой маршрут таков:
route::get('/student','studentController@index')->name('student')->middleware('student');
route::get('/teacher','teacherController@index')->name('teacher')->middleware('teacher');
Файл промежуточного программного обеспечения для студентов:
public function handle($request, Closure $next)
{
if (!Auth::check()) {
return redirect()->route('login');
}
if (Auth::user()->role == "STUDENT") {
return redirect()->route('student');
}
if (Auth::user()->role == "TEACHER") {
return redirect()->route('teacher');
}
// return $next($request);
}
LoginController:
protected $redirectTo ;
public function redirectTo()
{
if(Auth::user()->role =="STUDENT")
{
$this->redirectTo = '/student';
return $this->redirectTo;
}
if(Auth::user()->role=="TEACHER")
{
$this->redirectTo = '/teacher';
return $this->redirectTo;
}
}
RegisterController:
protected $redirectTo;
public function redirectTo()
{
if(Auth::user()->role =="STUDENT")
{
$this->redirectTo = '/student';
return $this->redirectTo;
}
// if(Auth::user()->role=="TEACHER")
else
{
$this->redirectTo = '/teacher';
return $this->redirectTo;
}
}


Ответы - страница не направлена должным образом в laravel / page is not directed properly in laravel

23.12.2019 08:40:36
Эта ошибка вызвана бесконечным циклом перенаправления.
Вы должны проверить конфигурацию вашего маршрута, я думаю, что у вас есть защита (через промежуточное программное обеспечение) также маршрут "вход". Вы должны оставить эти маршруты открытыми для всех типов пользователей.


23.12.2019 08:58:39
Ваше промежуточное программное обеспечение должно иметь логический путь, позволяющий продолжить выполнение запроса через стек к месту назначения. Все, что у вас есть, - это возвращаемые редиректы. У вас есть это промежуточное программное обеспечение, назначенное маршруту, на который промежуточное программное обеспечение также хочет перенаправить, что вызовет бесконечный цикл. Вы, вероятно, хотите внести некоторые коррективы:
public function handle($request, Closure $next, $role)
{
if (!Auth::check()) {
// no authenticated user
return redirect()->route('login');
}
if (Auth::user()->role != strtoupper($role)) {
// they don't have the role we are checking
// redirect them away to some default location
return redirect()->route('home');
}
// allow the Request to continue to the destination
return $next($request);
}
Добавьте это промежуточное программное обеспечение к вашему ядру HTTP как "roleCheck", или что угодно еще. Затем вы можете назначить это промежуточное программное обеспечение маршруту как roleCheck:student
или roleCheck:teacher
.
Route::get('/student','studentController@index')
->name('student')
->middleware('roleCheck:student');
Route::get('/teacher','teacherController@index')
->name('teacher')
->middleware('roleCheck:teacher');
