我正在使用auth用户访问控制的扩展。我有几个模块,每个模块都有几个 Controller 。我想以模块化的方式控制访问。我尝试将操作添加为 moduleId.*
,但在尝试访问模块中的任何 Controller 时收到 401 Access returned 错误。我当前的解决方案是为每个 Controller 添加一个操作 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();
...
编辑
最新代码来自Github repository已修复此问题。
关于authentication - 使用 auth 扩展进行模块范围的访问控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15758230/