在这里,我想清楚地解释一下我的问题,如何通过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
的数据
我该怎么做?帮助将非常感激。
答案 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']);
}
:
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);
}
。