Я пытаюсь перенаправить пользователя на страницу входа, когда он не аутентифицирован. Я использую промежуточное ПО в Slim3 для проверки с помощью Sentinel. Работает, но мне нужно переопределить тело, чтобы не отображать содержимое. Например, я мог бы использовать CURL для доступа к маршруту, подобному / users, и получить всю страницу. Из-за этого мне нужно удалить / переопределить тело, если пользователь не аутентифицирован.
public function __invoke(RequestInterface $request, ResponseInterface $response, callable $next)
{
$route = parse_url($request->getUri(), PHP_URL_PATH);
if ($route !== '/login' && ! $user = Sentinel::check() )
{
$response = $response
->withStatus(301)
->withHeader("location", '/login')
;
}
return $next($request, $response);
}
$response->with...
вместо того, чтобы позволить ему перейти к вызову$next
. - person Greg Schmidt   schedule 17.11.2018$next
, затем переопределить тело, а затем вернуться по мере необходимости. Это ожидаемый способ изменить что-то на выходе, например, распознать URL-адреса в теле и заменить их ссылками. Ранний возврат кажется намного лучшим подходом для ваших нужд по ряду причин; просто хотел прояснить, что абсолютно возможно изменить ответ, который следующая вещь в очереди промежуточного программного обеспечения возвращает вам. - person Greg Schmidt   schedule 17.11.2018! $user = Sentinel::check()
правильно? - person Script47   schedule 17.11.2018$response = $response->...
наreturn $response->...
, как было предложено в ответе odan. - person Zamrony P. Juhara   schedule 19.11.2018