删除机身PSR-7 Slim3中间件?

时间:2018-11-17 01:07:23

标签: php slim-3 psr-7

我正在尝试在未通过身份验证时将用户重定向到登录页面。 我在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 :(得分: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);
}