如何在yii2中更新和查看自己的实体

时间:2016-05-30 05:14:34

标签: yii2

我需要限制只有自己的用户可以在yii2中更新和查看他的记录。此外,其他用户无法通过更改URL中的记录ID来更新和查看其他用户实体。

1 个答案:

答案 0 :(得分:0)

执行此操作的最佳方法是通过RBAC您可以在此处查看教程:

  

https://www.youtube.com/watch?v=eFOIUeU-Y74

     

https://www.youtube.com/watch?v=G9-tBshv3Uo

否则,您可以通过放置模型和视图中的条件

来实现

您的表格必须包含owner_id字段,该字段将包含该实体的所有者ID。

然后,您可以覆盖模型中的find()方法,即

public static function find()
    {
        $find = parent::find();
        // filter all records by loggedin id with owner_id match
        $find->andWhere(['owner_id' => \Yii::$app->user->identity->id]);

        return $find;
    }

并且在您的控制器中,您可以放置​​条件如:

public function actionView($id)
    {
        $model = $this->findModel($id);

        if($model->owner_id != \Yii::$app->user->identity->id) {
            throw new \yii\web\ForbiddenHttpException;
        }

        return $this->render('view', [
            'model' => $model,
        ]);
    }