Yii2-通过IP限制页面

时间:2018-11-26 22:35:26

标签: yii2

我想在开发环境中通过IP限制错误页面。

在站点控制器中,我尝试添加访问规则,但这似乎不适用于error这样的操作:

[
      'actions' => ['error'],
      'allow' => true,
      'roles' => ['?'],
      'ips' => ['my-ip'],
],

enter image description here

1 个答案:

答案 0 :(得分:0)

不建议您设置错误页面的访问权限。当未经许可的用户有错误时,这将给出另一条提示消息,该消息无权访问错误页面。提示也不友好。

如果您的目标是为不同的ip显示不同级别的错误页面,则可以覆盖\ yii \ web \ ErrorAction为不同的特权用户显示不同的错误页面,例如:

class MyErrorAction extends \yii\web\ErrorAction {
    public function run()
    {
        if ('ip1' === \Yii::$app->request->userIP) {
            return $this->renderHtml1();
        }

        if ('ip2' === \Yii::$app->request->userIP) {
            return $this->renderHtml2();
        }

        return $this->renderDefaultHtml();
    }
}

然后在项目的配置文件中,将errorHandler的errorAction配置为MyErrorAction,例如:

[
    'components' => [
        'errorHandler' => [
            'errorAction' => MyErrorAction::class
        ],
    ],
]

或者您可以重写\ yii \ web \ ErrorHandle :: renderException()方法来控制演示文稿的内容,并将配置文件中的errorHandle配置为MyErrorHandler

此答案是从Google翻译翻译而来的