这是来自 zf2 论坛的最佳解决方案,用于处理来自最高级别的请求并在初始化控制器逻辑之前进行重定向。
其次,通过这种技术,您不需要检查控制器中的 $auth->hasIndentity() anyAction() 这让您可以在一些特殊的路线上工作,您希望确保用户必须登录。即 /Dashboard
这对我有用,我希望它对所有人都有帮助。
public function onBootstrap(MvcEvent $e)
{
$serviceManager = $e->getApplication()->getServiceManager();
$path = $e->getRequest()->getUri()->getPath();
if(strripos($path, 'Dashboard') !== false) {
$authService = $serviceManager->get('MyApp\Authentication\Service');
if (!$authService->hasIdentity()) {
$e->getResponse()
->setStatusCode(302)
->getHeaders()->addHeaderLine('location', '/path/to/login');
return $e->getResponse();
}
}
}