获取bj授权允许来自表的模块和特权

时间:2014-03-18 08:10:51

标签: php zend-framework2 bjyauthorize

每个bjyauthorize.global文件都有一个'allow'部分,其中包含一个数组。

'rule_providers' => array(
    'BjyAuthorize\Provider\Rule\Config' => array(
        'allow' => array(
            // allow guests and users (and admins, through inheritance)
            // the "wear" privilege on the resource "pants"
            array(array('guest', 'user'), 'pants', 'wear')
        ),

        'deny' => array(
            // ...
        ),
    ),
),

此数组包含所有允许的角色。但这些角色是硬编码的。我只想通过函数从表中返回那些数组。我怎么能这样做?..请指教.....

2 个答案:

答案 0 :(得分:0)

好的。可能有各种方法来实现这一点,我很确定你会遇到麻烦,但你可以在module.php中的onBootstrap方法中覆盖配置。

  

../项目/模块/应用程序/ Module.php

public function onBootstrap(MvcEvent $e) {
    $eventManager = $e->getApplication()->getEventManager();
    $serviceManager = $e->getApplication()->getServiceManager();
    $config = $serviceManager->get('Config');
    // You'll need to get the information from the DB here
    var_dump($config['bjyauthorize']['rule_providers']);exit;
}

从这里开始,你应该没问题,只需从你的数据库中获取信息,并用db中的角色覆盖$config['bjyauthorize']['rule_providers']

编辑:我不熟悉bjyauthorize模块,但我非常确定它有添加或删除ACL条目的方法。偷看模块代码并查看是否可以找到任何和/或它提供其服务中的任何方法都是一个好主意。如果它确实这可能是一种更好的解决方案,然后覆盖配置。

答案 1 :(得分:0)

嘿,我找到了答案.......这可以通过覆盖bjyauthorize规则和资源类来完成。通过bjyauthorize.global.php提供的数组分别被过滤到其规则和资源类中。只需编写自己的资源和规则类,而不是硬编码,在其get方法中,打开一个表网关,连接到DB并引入信息......:)