ZF2将BjyAuthorize与Zend \ Navigation集成
我有一个集成BjyAuthorize
和Zend导航的问题,不知道如何解决它们。 我尝试这本手册,一切正常。 但是我期望当我在bjyauthorize.config
定义警卫时,在bjyauthorize.config
之后,我的导航和警卫配置(被拒绝的控制器或路由不显示导航项目)之间会有反射。 我的问题是导航项目仍然显示,但部分正确保护。 有没有办法,如何将卫兵反映到导航中? 我在Module.php中查看助手配置
我的应用程序/ Module.php视图助手配置:
'mainMenu' => function($sm){
$nav = $sm->get('navigation')->menu();
$serviceLocator = $sm->getServiceLocator();
$acl = $serviceLocator->get('BjyAuthorizeServiceAuthorize')->getAcl();
$role = $serviceLocator->get('BjyAuthorizeServiceAuthorize')->getIdentity();
$nav->setAcl($acl);
$nav->setRole($role); // Todo replace
$nav->setUseAcl();
return $nav->setUlClass('nav')->setTranslatorTextDomain(__NAMESPACE__);
}
我的警戒配置在bjyauthorize.global.php
'guards' => array(
'BjyAuthorizeGuardController' => array(
array('controller' => 'ArticleControllerArticle', 'roles' => array('user')),
),
和我的navigation.global.php
return array(
'navigation' => array(
'default' => array(
'articles' => array(
'label' => 'Articles',
'route' => 'articles',
),
),
));
我尝试将路由配置更改为模块/控制器/操作,但仍然无效。
您没有在导航配置中指定资源。 还要确保$角色是否符合bjyauthorize-identity
'navigation' => array(
'default' => array(
array(
'label' => 'Registration',
'resource' => 'controller/cebEvent.registrationController:add',
'route' => 'registration/add',
),
),
),
指定的资源必须符合您的防护配置:
'guards' => array(
'BjyAuthorizeGuardController' => array(
array('controller' => 'cebEvent.registrationController','action' => 'add', 'roles' => array('guest','registration_manage')),
),
),
帮助任何人尝试使用BjyAuthorize Guard Route ...
您将需要使用route/
路由名称的前缀,并将其用于资源值。
如果你的配置有这样的警卫......
'guards' => array(
'BjyAuthorizeGuardRoute' => array(
array('route' => 'zfcadmin/zfcuseradmin/list', 'roles' => array('admin')),
)
);
你会为你的导航定义类似的东西
'navigation' => array(
'default' => array(
'admin' => array(
'label' => 'Admin',
'route' => 'zfcadmin',
'pages' => array(
'users' => array(
'resource' => 'route/zfcadmin/zfcuseradmin/list', // route resource ;)
'label' => 'Users',
'route' => 'zfcadmin/zfcuseradmin/list',
),
),
),
),
),
您可以通过将其放置在模块的onBootstrap方法中来设置默认ACL和角色。
$sm = $e->getApplication()->getServiceManager();
$auth = $sm->get('BjyAuthorizeServiceAuthorize');
$acl = $auth->getAcl();
$role = $auth->getIdentity();
ZendViewHelperNavigation::setDefaultAcl($acl);
ZendViewHelperNavigation::setDefaultRole($role);
我希望这能帮助那里的人。
你可以发布使用Guard Route而不是Controller的使用示例吗? 我的例子路线为这种情况:
'guards' => array(
'BjyAuthorizeGuardRoute' => array(
array('route' => 'zfcadmin/sap-targetvalue/index', 'roles' => array('guest', 'user')),
array('route' => 'zfcadmin/sap-targetvalue/create', 'roles' => array('user')),
)
);
链接地址: http://www.djcxy.com/p/22231.html