2

我有一个仪表板控制器,路由设置为/Dashboard[/:action][/:id]

我不想签$auth->hasIdentity()入我的仪表板控制器的索引、编辑、添加、删除操作,我想从顶层检测到。在阅读了许多博客和文档后,我发现getControllerConfig()这是控制器可能需要的任何初始设置的正确位置。

不幸的是,我不能redirect()getControllerConfig()我已经检查过的函数中做,ZfcUser但这对于我的小场景来说太多了。

有人可以对此有所了解,谢谢。

4

2 回答 2

1

这是来自 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();
        }
    }
}
于 2012-12-17T05:27:03.330 回答
0

如果您愿意使用 2.1 分支,则有一个控制器插件可以为您完成工作。在控制器内部只需执行以下操作:

$identity = $this->identity()
于 2012-12-13T08:19:49.663 回答