1

如何取回我在 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')) .

提前谢谢

4

1 回答 1

3

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

您可能必须使用 RBAC 并在外部保存您的访问规则。阅读这里了解更多信息:Yii 文档 - 基于角色的访问控制

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

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

于 2012-05-12T22:03:18.287 回答