【问题标题】:Yii i want to get all actions that a user is authorized to performYii 我想获取用户有权执行的所有操作
【发布时间】:2012-06-22 17:32:22
【问题描述】:

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

提前感谢

【问题讨论】:

    标签: php yii


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 有没有办法让每个操作都可以访问角色?
    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2020-04-22
    • 2015-07-13
    • 2020-11-22
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多