【发布时间】:2017-06-22 15:12:20
【问题描述】:
在我的 ZF2 (2.4.5) 项目中,我的主(父)控制器具有验证用户权限的功能,因此每个继承的控制器都可以轻松访问它。但是重定向存在问题。我知道继承控制器的动作必须返回响应,但是可以在父控制器中强制重定向吗?
父控制器
<?php
namespace Application;
use Zend\Mvc\Controller\AbstractActionController;
class CoreController extends AbstractActionController{
public function checkAccess($moduleName, $accessName){
if($this->getAclService()->isAllowed($moduleName, $accessName)){
self::redirect()->toRoute('access-denied');
}
}
}
继承的控制器
namespace Application\Controller;
use Application\CoreController;
use Zend\View\Model\ViewModel;
class InterfaceController extends CoreController{
public function indexAction(){
$this->checkAccess('Foo', 'Bar');
return new ViewModel([
]);
}
}
TL;DR 如果我在InterfaceController 中调用$this->checkAccess('Foo', 'Bar'); 和在CoreController 中调用$this->getAclService()->isAllowed($moduleName, $accessName) 返回false 我想立即将用户重定向到路由'access-denied' 而无需完成InterfaceController::indexAction 的其余部分
重要提示:我想避免检查 checkAccess 返回的内容,我只是强制重定向。
提前感谢您的回复。
【问题讨论】:
标签: php zend-framework2 acl