1

我想尝试清楚地了解如何使用 Yii 的 RBAC 做一些事情。我有一张itemfk's. userCGridview用来给update这个数据库记录一个选项。而且我现在也开始做访问规则。

项目表

- 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。

提前致谢

4

1 回答 1

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 记录,然后通过模型访问该列。

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

于 2013-08-14T03:30:55.943 回答