Php Yii2要求登录时错误处理不起作用

Php Yii2要求登录时错误处理不起作用,php,yii2,Php,Yii2,我有以下代码片段,用于强制登录yii2项目 $config = [ 'id' => 'basic', 'basePath' => dirname(__DIR__), 'on beforeAction' => function ($event){ if(Yii::$app->user->isGuest && Yii::$app->getRequest()->url !== Url::to(Yii::$app->getUs

我有以下代码片段,用于强制登录yii2项目

$config = [
'id' => 'basic',

'basePath' => dirname(__DIR__),

'on beforeAction' => function ($event){

    if(Yii::$app->user->isGuest && Yii::$app->getRequest()->url !== Url::to(Yii::$app->getUser()->loginUrl))
    {
        Yii::$app->response->redirect(Url::to(\Yii::$app->getUser()->loginUrl));
    }
},  
这似乎适用于绝大多数情况。然而,如果我试图访问一个不存在的控制器/操作/url,我会得到404页面。我遇到的问题是,如果某人是客人,我甚至不想让他们看到错误页面,简单明了,他们可以登录,也可以查看登录页面。在上面的代码段中,重定向似乎不起作用,并显示错误页面

有没有人遇到过类似的问题或解决方案

更新

我已经测试了在错误页面上放置重定向

<?php
return Yii::$app->controller->redirect("http://www.google.com");
?>


似乎连这个重定向都不起作用。因此,当出现错误时,重定向似乎永远不会起作用。

yii的文档再次成为王者。尽管我已经扫描了错误处理程序文档大约10次,但有一条信息我显然遗漏了

在文档中,我们可以看到以下行:

注意:如果需要在错误处理程序中重定向,请按以下方式执行:
php Yii::$app->getResponse()->redirect($url)->send();返回

因此,如果我将我的代码片段更改为以下内容,那么世界上的一切又都是正确的

'on beforeAction' => function ($event){

    if(Yii::$app->user->isGuest && Yii::$app->getRequest()->url !== Url::to(Yii::$app->getUser()->loginUrl))
    {
        Yii::$app->getResponse()->redirect(Url::to(\Yii::$app->getUser()->loginUrl))->send(); 
        return;
    }

},
我想我现在要更新我的代码片段了