我有从中继承其他人的主控制器。代码是这样的
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解决此问题?有机会不追踪验证码的请求吗?
默认(生成的)控制器使用如下内容:
public function actions()
{
return [
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
],
];
}
Run Code Online (Sandbox Code Playgroud)
你的控制器里有这样的东西吗?
这意味着有一个操作“captcha”用于显示验证码(它返回图像)。当您有一个显示验证码的页面时,该图像将在您要返回的页面之后调用。因此,最新访问的页面就是带有验证码的页面。
我认为你必须过滤掉这个动作。
另一种可能性是使用默认$controller->goBack()
方法。returnUrl
我认为这会默认处理注册。
归档时间: |
|
查看次数: |
4004 次 |
最近记录: |