我有一个具有以下功能的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,但不是! 我在这里想念一些明显的东西吗?
顺便说一句:我刷新了权限,没有任何改变
答案 0 :(得分:1)
原来问题出在缓存中。 我不知道为什么,但两者: php yii缓存/刷新rbacCache 和 php yii缓存/全部刷新 根本没有清除缓存。 我必须手动删除Cache文件(在我的情况下是在/ runtime / rbacCache / rb /中)