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