澄清Yii的RBAC的商业规则

时间:2013-08-14 02:41:36

标签: php yii

我想尝试清楚了解如何使用Yii的RBAC。我有一个item表,fk'suser有关。我正在使用CGridview为此{DB}记录提供update选项。我现在也开始使用Access规则了。

项目表

- id
- name
......
- user_id

我的访问规则:

$auth->createOperation('updateOwnItem', 'User can update their own item', 'return $params["user_id"] == Yii::app()->user->id;');

因此,例如,我可能有一个更新文件的链接:

www.example.com/item/update/2

控制器

    public function actionUpdate($id) {

    if(!Yii::app()->user->checkAccess('updateOwnItem', array('user_id'=>Yii::app()->user->id))) {

        throw new CHttpException(403, 'No access.');
    }

// Rest of controller

但总是会返回“无法访问”。

我的其他规则工作,但有人能发现这里可能出错的地方吗?另外,我覆盖了getId()方法,因此我的user-> id确实返回了用户ID。

提前致谢

1 个答案:

答案 0 :(得分:2)

我可能已经解决了这个问题。如果这个错误,请随时告诉我。

<强>控制器

public function actionUpdate($id) {

    $model = $this->loadModel($id, 'Item');

    if(!Yii::app()->user->checkAccess('updateOwnItem', array('user_id' => $model->user_id))) {

        throw new CHttpException(403, 'No access.');
    }

我认为我必须加载$ model记录,然后通过模型访问该列。

如果这看起来不对,请告诉我。