Снять корпус промежуточного ПО PSR-7 Slim3? - PullRequest
0 голосов
/ 17 ноября 2018

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

0 голосов
/ 17 ноября 2018

Вы не должны вызывать обратный вызов $ 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);
}
...