如何在Yii中检查对模型的某些属性的访问?

时间:2015-04-09 10:08:47

标签: php yii model rbac

使用Yii框架我有一个我自己无法解决的问题。

我如何很好地检查对模型某些属性的访问权限?

上下文:

  • 我使用RBAC,用户可能同时拥有多个角色
  • 我有一个带有一堆属性的模型(例如,我们称之为Profile)
  • 任何注册用户(emailagefavorite color等)都可以修改某些属性,有些属性只能由具有某些特定角色的用户进行编辑({ {1}} - 可由主持人或管理员更改is_banned - 只能由管理员等更改。)

我已经做过的事情: 目前我只看到一种可能的方法来完成这项任务:

balance

有没有更好的方法来解决这样的任务?感谢。

1 个答案:

答案 0 :(得分:0)

考虑使用模型方案(http://www.yiiframework.com/wiki/266/understanding-scenarios/):

  1. 为您的模型规则添加方案条件:

        public function rules()
        {
            return array(
                array('balance', 'integer', 'on' => 'admin'),
            );
        }
    
  2. 在控制器中设置模型方案:

        if ($this->user->checkAccess('admin')) {
            $model->scenario = 'admin';
        }
    
  3. 现在,仅保存场景可用的属性。 还要考虑在搜索模型中使用场景。