страница не направлена должным образом в laravel

страница не направлена должным образом в laravel

23.12.2019 08:35:39 Просмотров 13 Источник

Я использую несколько ролей, используя 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;
            }
    }
У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/59459252/page-is-not-directed-properly-in-laravel#comment105100025_59459252
что именно вы хотите сделать с этим промежуточным программным обеспечением? вы хотите, чтобы это помешало пользователям, которые не являются студентами, добраться до маршрута, на котором находится промежуточное программное обеспечение? трудно сказать, чего вы на самом деле пытаетесь достичь с помощью этого промежуточного программного обеспечения
https://stackoverflow.com/questions/59459252/page-is-not-directed-properly-in-laravel#comment105100129_59459252
У меня есть teacherMiddleware, как и у студента. Я хочу остановить студентов, чтобы получить доступ со стороны учителя

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

alberto-bottarini

23.12.2019 08:40:36

Эта ошибка вызвана бесконечным циклом перенаправления.

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

https://stackoverflow.com/questions/59459252/page-is-not-directed-properly-in-laravel/59459289#comment105099930_59459289
Вы можете указать свое решение, Пожалуйста.На самом деле я новичок в ларавеле :/
Является ответом!
lagbox

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');
https://stackoverflow.com/questions/59459252/page-is-not-directed-properly-in-laravel/59459474#comment105100537_59459474
Ух ты!!! Это сработало как заклинание. Спасибо :D
Закрыть X