如何限制Yii2 url视图获取请求

时间:2016-02-05 14:13:03

标签: url yii2

在这里,我想清楚地解释一下我的问题,如何通过Yii2中的URL限制获取请求

这是我的网址:

http://localhost/school/backend/web/index.php?r=user%2Fview&id=42

如果我更改了view id = 43,它会显示id 43的数据,我不想通过网址获取数据。我想通过网址or限制获取请求如何加密id

如果我将我的网址管理器更改为

'urlManager' => [
    'enablePrettyUrl' => true,
     'showScriptName' => false,
],

然后我会得到如下的网址

http://localhost/school/admin/user/view?id=42

此处,如果我更改id=43我正在获取id 43的数据

我该怎么做?帮助将非常感激。

2 个答案:

答案 0 :(得分:0)

首先你要考虑你的目的。 为什么要阻止用户获取其他ID? 如果他们无权查看其他ID,您可以轻松授权他们的请求:Yii2-authorization

否则,您可以为表使用字符串键,并使用Yii内置类为键生成随机字符串。 Yii2-security

答案 1 :(得分:0)

假设当前情况(让我知道我是否误解了某些内容):

document.querySelector('#divConfirm table:nth-child(2) tr:last-child'); 可以查看/添加/编辑Company(您已经完成的那部分)。现在,每个People只能在您自己Company上执行操作,而不能执行其他操作。

一个解决方案:

People模型中,您必须拥有以下内容:

Company

您可以添加另一个函数,只是为了返回public function getPeoples() { return $this->hasMany(People::className(), ['id_people' => 'id']); }

的ID
People

现在在您的控制器中,您必须重写public function getPeoplesIds() { return ArrayHelper::map($this->peoples, 'id', 'id'); } 功能:

beforeAction

这样,您在运行每个操作之前都会检查public function beforeAction($action){ $id = Yii::$app->request->get('id'); if($id && !Yii::$app->user->isGuest) { $user = User::findOne(Yii::$app->user->getId()); $company = //Do the logic to get the company's user if (! in_array($id, $company->peoplesIds) { throw new NotFoundHttpException('The requested page does not exist.'); } } return parent::beforeAction($action); }