Как правильно перенаправить запрос в промежуточном программном обеспечении?

Я пытаюсь реализовать (в) знаменитый улучшенный постоянный сеанс в качестве промежуточного ПО в микрорамках Slim.

В описанном алгоритме есть несколько мест, где приложение должно проверять куки пользователя и перенаправлять пользователя, если их куки истекли или являются недействительными. К сожалению, невозможно перенаправить пользователя из промежуточного ПО по двум причинам:

  1. Слима redirect может использоваться только внутри именованных маршрутов;
  2. redirect создаст совершенно новый запрос, перезапустив приложение Slim. Те же условия, которые вызывали перенаправление, будут сработать повторно, создавая таким образом бесконечный цикл.

Проблема 1 может быть решена с умным использованием хуков, но я не уверен, что делать с проблемой 2. Я замечаю, что некоторое промежуточное ПО решает это с помощью пользовательского исключения, которое затем перехватывается с помощью обработчика ошибок Slim, а затем вызывает редирект:

// Handle the possible 403 the middleware can throw
$app->error(function (\Exception $e) use ($app) {
...
if ($e instanceof HttpUnauthorizedException) {
return $app->redirectTo('login');
}
...
});

Но я не уверен, что это лучший способ сделать это. Есть ли другие способы, которыми я могу это сделать?

1

Решение

То, что вы перечислили выше, является прекрасным способом сделать это, и, как правило, как это делается. Предполагая, что ваша страница входа не проверяет HttpUnauthorizedExcepion, не было бы способа перенаправить цикл.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]