使用Zend_Acl与重定向/转发



在我的控制器中,我有一些重定向到另一个动作的动作。例如:

public function editAction()
{
    $this->_forward('add');
}

我想只允许用户访问editAction,但我也需要给他访问addAction的权限。有没有办法让他只访问editAction,即使它重定向到addAction ?

谢谢。

对应用程序进行这种控制的最好方法是在引导程序中引入一个插件,以便在动作到达控制器之前对其进行验证。

你需要写一个扩展Zend_Controller_Plugin_Abstract的插件,并覆盖preDispatch函数,该函数的参数是一个请求对象。从请求中,你可以得到控制器名和动作名,这是当你从ACL规则中验证它并将用户重定向到你想要的地方时。

if($request->getControllerName() == 'MyController' &&
   $request->getActionName() == 'edit'){
  if(!$myAcl->isAllowed('edit')){
    $request->setActionName('add');
  }
}

这样你就不必在你的控制器上设置很多规则,并保证插件的安全。

相关内容

  • 没有找到相关文章

最新更新