在调用操作之前,从另一个控制器确定Yii accessRules

时间:2012-06-22 08:29:58

标签: php yii authorization

是否有合理的方法来确定当前用户是否可以根据该控制器和accessControl过滤器的accessRules访问不同控制器上的操作?

例如,我不希望显示一个链接,该链接转到用户无权访问的控制器操作,具体取决于他们的角色以及该控制器的accessRules()中定义的规则。

2 个答案:

答案 0 :(得分:0)

我相信,由于Yii处理它的控制器,答案并没有什么不同。

唯一的方法是自己解析控制器并在代码中动态添加自己的规则作为控制器的一部分,然后评估是否允许用户通过bizrule调用访问特定功能。

但是评论中链接问题的答案是明智的,并且更适合更复杂的基于角色的访问管理。由于规则是外部存储的,你可以通过控制器及其动作和bam调用check函数,你有你的真假。

答案 1 :(得分:0)

绝对:

    Yii::import('application.controllers.YourControllerName');
    $controller = new YourControllerName($this->id);
    echo '<pre>';
    var_dump($controller->accessRules());
    echo '</pre>';

您可以访问特定控制器的规则。此外,您可以确定当前用户是否可以查看特定控制器的特定操作=)。