我需要限制只有自己的用户可以在yii2中更新和查看他的记录。此外,其他用户无法通过更改URL中的记录ID来更新和查看其他用户实体。
答案 0 :(得分:0)
执行此操作的最佳方法是通过RBAC您可以在此处查看教程:
否则,您可以通过放置模型和视图中的条件
来实现即
您的表格必须包含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,
]);
}