Промежуточное ПО Laravel создает цикл перенаправления - PullRequest
0 голосов
/ 23 октября 2019

Я использую внутренний API для аутентификации в Laravel, и я создал промежуточное программное обеспечение, чтобы проверить, вошел ли пользователь в систему с использованием сеанса. Промежуточное программное обеспечение работает в точке перенаправления на маршрут входа в систему, но оно продолжает пытаться перенаправить, пока я не вижу ERR_TOO_MANY_REDIRECTS . Впервые я использую другой способ аутентификации, я удалил промежуточное ПО de guest и auth , которое я использовал ранее.

Это мои маршруты:

Route::get('/login', 'ApiController@index')->name('login')->middleware('psa');
Route::post('/logout', 'ApiController@destroy')->name('logout');
Route::post('/auth', 'ApiController@login')->name('psaAuth');

Промежуточное программное обеспечение:

public function handle($request, Closure $next)
    {
        if(! $request->session()->exists('login')){
            return redirect('/login');
        }else{
            return redirect('/');
        }

        return $next($request);
    }

Есть идеи, почему это происходит?

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Поскольку вы применяете psa связующее ПО только для /login, ваш код должен выглядеть примерно так:

public function handle($request, Closure $next)
{
    if($request->session()->exists('login')){
        return redirect('/');
        // If session exist, take him to home page
    }

    // Else let him stay in the login page for login.
    return $next($request);
}
0 голосов
/ 23 октября 2019

Проблема не связана с Laravel , но это логическая ошибка, которую вы имеете в своем коде:

Что вы делаете, это проверяете, существует ли сеанс входа в систему.

if(! $request->session()->exists('login')){
    return redirect('/login');
}

и вы делаете перенаправление, если этот сеанс существует, если условие не выполняется, вы делаете перенаправление на /

else{
    return redirect('/');
}

Таким образом, вы всегда перенаправляете запрос либо на /login или /, и return $next($request); никогда не будет выполнен, создавая бесконечный цикл перенаправлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...