[英]Pass custom variables in ZF2 routing config?
我正在考慮實現ACL的最佳方法。 所以-我需要保護某些路線。 有些路線僅對用戶開放,有些對訪客,對管理員開放。
似乎最好的方法是在路由配置中添加$ role變量。 因此,我將附加到路由后事件,獲取routeMatch,然后查看該用戶是否可以輸入此路由。
我怎樣才能做到這一點? 我可以像這樣簡單地注入額外的變量:
'router' => array(
'routes' => array(
'route1' => array(
'type' => 'Zend\Mvc\Router\Http\Regex',
'options' => array(
'regex' => '/some/route/1',
'defaults' => array(
'controller' => 'Subscriber\Controller\View',
'action' => 'route1',
'role' => 'user', //extra
),
'spec' => '/some/route/1',
),
),
'route2' => array(
'type' => 'Zend\Mvc\Router\Http\Regex',
'options' => array(
'regex' => '/some/route/2',
'defaults' => array(
'controller' => 'Subscriber\Controller\View',
'action' => 'route2',
'role' => 'guest', //extra
),
'spec' => '/some/route/2',
),
),
//other routes....
),
),
是的,您只需添加路由器密鑰即可
'defaults' => array(
'controller' => 'Subscriber\Controller\View',
'action' => 'route1',
'role' => 'user', //extra
),
然后你可以像這樣檢查
public function onBootstrap(MvcEvent $e) {
$application = $e->getApplication();
$eventManager = $application->getEventManager();
$eventManager->attach(MvcEvent::EVENT_ROUTE, function(MvcEvent $e) {
$e->getRouteMatch()->getParam('role');
});
}
但是,為此有一些模塊,例如與ZfcUser一起使用的bjyoungblood / BjyAuthorize
您應該看看: ZfcRbac 。 有據可查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.