YII2具有权限和CAN功能的问题

时间:2019-06-03 20:09:25

标签: permissions yii2 roles yii2-advanced-app rbac

我有一个具有以下功能的YII2高级模板应用程序:

public function isVisible()
    {
        if ($return = \Yii::$app->getUser()->can($this->getWidgetPermission())) {
            return true;
        } else {
            return false;
        }
    }

如果我添加以下代码以打印所有用户权限和所涉及的权限,则该功能在特定权限下的行为不正常:

public function isVisible()
    {
        if ($return = \Yii::$app->getUser()->can($this->getWidgetPermission())) {
            return true;
        } else {
            pr($this->getWidgetPermission() ,'NON ALLOWED!');
            pr(\Yii::$app->authManager->getPermissionsByUser(\Yii::$app->getUser()->getId()));
            return false;
        }
    }

我使用第一个pr()获得许可权的名称,并使用第二个pr()获得许可权的数组。 奇怪的是:权限数组包括第一个。

例如: 第一个pr()的输出:

backend\modules\m3p2\widgets\icons\WidgetIconProjects

第二个pr()的输出:

[
..,
[name] => backend\modules\m3p2\widgets\icons\WidgetIconProjects
..,
]

所以在理论上:

\Yii::$app->getUser()->can($this->getWidgetPermission()

应返回TRUE,但不是! 我在这里想念一些明显的东西吗?

顺便说一句:我刷新了权限,没有任何改变

1 个答案:

答案 0 :(得分:1)

原来问题出在缓存中。 我不知道为什么,但两者: php yii缓存/刷新rbacCache php yii缓存/全部刷新 根本没有清除缓存。 我必须手动删除Cache文件(在我的情况下是在/ runtime / rbacCache / rb /中)