簡體   English   中英

在ZF2路由配置中傳遞自定義變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM