authentication - 使用 auth 扩展进行模块范围的访问控制

标签 authentication yii access-control

我正在使用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/

相关文章:

php - 如何在yii框架网格的一列中放置两个imagelink?

php - 非常简单的 PHP + MySql 登录表单不起作用?

firebase - 使用电子邮件和密码创建帐户时,Flutter + Firebase updateDisplayName

php - 在 PHP 中安全地创建和销毁登录 session

mysql - 如何实现模糊地称为 "database versioning"的内容?

php - Yii 注册 CSS 文件,作为最后一个(在 assets 之后)

security - PouchDB/CouchDB 的每个文档用户访问控制

java - 我如何禁止 jar 在 java 中创建新线程

java - JAX-WS,身份验证和授权 - 如何?

ruby-on-rails - 如何按原始顺序获取 POST 参数(使用 Rails)?