我希望得到用户有权执行的所有操作

时间:2012-05-12 19:03:55

标签: php yii

如何取回我在accessrules函数中定义的动作

public function accessRules(){
    return array(
                 'allow',
                 'actions'=>array('create','update' ...),
                  ....
                 )
}

我需要它们来表示像if(in_array(' create',$ actions))echo CHtml :: link(' link to create form') 或者可能是if(user-> isAutorizedToPerfoem(' create'))。

提前

thanx

1 个答案:

答案 0 :(得分:3)

我认为使用accessControl过滤器时无法做到这一点。在这种情况下,授权数据直接保存在控制器中,因此从技术上讲,您必须在控制器中才能查看accessRules()。据我所知,你无法手动检查访问权限。过滤器在那里工作。你可以通过调用$ this-> accessRules来查看你的访问规则,但你必须在控制器中。

您可能必须使用RBAC并在外部保存访问规则。请阅读此处以获取更多信息:Yii Documentation - role based access control

还有一个非常强大的Yii扩展名为Rights,它为RBAC提供后端。

目前这似乎有些过分,但RBAC在灵活性方面无与伦比。如果您使用它,则可以检查Yii::app->user->checkAccess('post.create')等访问权限以及许多其他内容。