在我的行政模块中,我有一个叫作电子邮件的控制员,我希望大多数行动只能通过在行政管理用户中设置空白才能进入。 然而,我想让任何人都能采取行动。 (它拥有通过URL远程发射的电子邮件功能。) 此时此刻,用Zentd_Auth和Zentd_Acl一样:
if ($request->getModuleName() == admin ) {
// access resources (controllers)
$acl->addResource( index );
$acl->addResource( reports );
$acl->addResource( email );
$acl->addResource( error );
// access roles
$acl->addRole(new Zend_Acl_Role( visitor ));
$acl->addRole(new Zend_Acl_Role( user ));
$acl->addRole(new Zend_Acl_Role( admin ));
// access rules
$acl->deny( visitor );
$acl->deny( user );
$acl->allow( admin );
$resouce = $request->getControllerName();
$action = $request->getActionName();
$identity = $auth->getStorage()->read();
if (is_object($identity)) {
$role = $identity->role;
} else {
$role = visitor ;
}
if (!$acl->isAllowed($role, $resouce, $action)) {
$request->setModuleName( default )
->setControllerName( auth )
->setActionName( login );
}
}
我如何改变上述准则,使来访者能够参加/管理/电子邮件/处理行动?