2

我正在使用auth扩展来进行用户访问控制。我有几个模块,每个模块都有几个控制器。我想在模块化的基础上控制访问。我尝试添加操作,moduleId.*但在尝试访问模块中的任何控制器时出现401 Access denied错误。我目前的解决方案是为每个控制器添加一个操作,moduleId.controllerId.*并将这些操作组合成每个模块的任务。有没有更好的方法来添加模块范围的访问控制?

4

1 回答 1

2

模块范围控制的实现不存在。我将/auth/filters/AuthFilter.php文件更改如下:

protected function preFilter($filterChain)
{
    $itemName = '';
    $controller = $filterChain->controller;

    if (($module = $controller->getModule()) !== null){
        $itemName=str_replace('/','.',$module->getId()).'.';//for nested modules
        if (Yii::app()->user->checkAccess($itemName . '*')) return true;//Added this
    }

    $itemName .= $controller->getId();
    ...

编辑

Github 存储库中的最新代码具有此修复程序。

于 2013-04-07T01:53:01.280 回答