Снять корпус промежуточного ПО PSR-7 Slim3?

Я пытаюсь перенаправить пользователя на страницу входа, когда он не прошел проверку подлинности. Я использую промежуточное программное обеспечение в 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);

}

1 ответ

Вы не должны вызывать обратный вызов $next, если хотите перенаправить пользователя:

public function __invoke(RequestInterface $request, ResponseInterface $response, callable $next)
{
    $route = parse_url($request->getUri(), PHP_URL_PATH);

    if ($route !== '/login' && ! $user = Sentinel::check() )
    {
        return $response
            ->withHeader('Location', '/login')
            ->withStatus(302);
    }

    return $next($request, $response);
}
Другие вопросы по тегам