是否有一种明智的方法来确定当前用户是否可以根据该控制器的 accessRules 和 accessControl 过滤器访问不同控制器上的操作?
例如,我不想根据用户的角色和该控制器的 accessRules() 中定义的规则,显示指向用户无权访问的控制器操作的链接。
是否有一种明智的方法来确定当前用户是否可以根据该控制器的 accessRules 和 accessControl 过滤器访问不同控制器上的操作?
例如,我不想根据用户的角色和该控制器的 accessRules() 中定义的规则,显示指向用户无权访问的控制器操作的链接。
我相信由于 Yii 如何处理它的控制器,答案并没有什么不同。
唯一的方法是自己解析控制器并在代码中动态添加自己的规则作为控制器的一部分,然后评估是否允许用户通过 bizrule 调用访问特定功能。
但是评论中链接问题的答案是一个明智的答案,并且对于更复杂的基于角色的访问管理来说是首选。由于规则是在外部存储的,您只需使用控制器及其操作和 bam 调用检查功能,您就有了真假。
绝对地:
Yii::import('application.controllers.YourControllerName');
$controller = new YourControllerName($this->id);
echo '<pre>';
var_dump($controller->accessRules());
echo '</pre>';
您可以访问特定控制器的规则。此外,您可以确定当前用户是否可以看到特定控制器的特定操作 =)。