验证(yii2)后将用户重定向到上一页

rom*_*ny4 5 yii2

我有从中继承其他人的主控制器。代码是这样的

public function init()
{
    $this->on('beforeAction', function ($event) {
        ...

        if (Yii::$app->getUser()->isGuest) {
            $request = Yii::$app->getRequest();
            // dont remember login page or ajax-request
            if (!($request->getIsAjax() || strpos($request->getUrl(), 'login') !== false))                  {
               Yii::$app->getUser()->setReturnUrl($request->getUrl());
              }
           }
        }
        ...
    });
}
Run Code Online (Sandbox Code Playgroud)

它完全适用于所有页面,带有验证码的页面除外。所有带有验证码的页面都将重定向到这样的内容-/ captcha /?v = xxxxxxxxxxxxxx

如果对象被记录为Yii :: $ app-> getRequest(),那么我看到带有验证码的页面被使用了两次。第一次,该对象是corect,第二次,我看到带有验证码的对象。如何使用yii解决此问题?有机会不追踪验证码的请求吗?

Phi*_*ppS 1

默认(生成的)控制器使用如下内容:

public function actions()
{
    return [
        'captcha' => [
            'class' => 'yii\captcha\CaptchaAction',
        ],
    ];
}
Run Code Online (Sandbox Code Playgroud)

你的控制器里有这样的东西吗?

这意味着有一个操作“captcha”用于显示验证码(它返回图像)。当您有一个显示验证码的页面时,该图像将在您要返回的页面之后调用。因此,最新访问的页面就是带有验证码的页面。

我认为你必须过滤掉这个动作。

另一种可能性是使用默认$controller->goBack()方法。returnUrl我认为这会默认处理注册。

参考:类 yii\web\Controller