Authentication 使用auth扩展的模块范围访问控制

Authentication 使用auth扩展的模块范围访问控制,authentication,yii,access-control,Authentication,Yii,Access Control,我正在使用扩展进行用户访问控制。我有几个模块,每个模块有几个控制器。我想在模块化的基础上控制访问。我尝试将操作添加为moduleId.*,但在尝试访问模块中的任何控制器时,我遇到401访问被拒绝错误。我当前的解决方案是为每个控制器添加一个操作作为moduleId.controllerId.*,并将这些操作组合到每个模块的任务中。是否有更好的方法添加模块范围的访问控制?没有模块范围的访问控制的实现。我将/auth/filters/AuthFilter.php文件更改如下: protected fu

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

没有模块范围的访问控制的实现。我将
/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();
    ...
编辑

来自的最新代码具有此修复程序