【问题标题】:Pass custom variables in ZF2 routing config?在 ZF2 路由配置中传递自定义变量?
【发布时间】:2015-01-14 11:47:57
【问题描述】:

我正在考虑实施 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....
    ),
),

【问题讨论】:

    标签: php zend-framework zend-framework2 acl


    【解决方案1】:

    是的,你可以像你一样添加路由器密钥

    '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');
        });
    }
    

    然而,有一些模块为此而生 例如 bjyoungblood/BjyAuthorize 与 ZfcUser 一起使用

    【讨论】:

      【解决方案2】:

      你应该看看:ZfcRbac。有据可查。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-04
        • 2014-01-08
        • 2014-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多