加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

在auth之后将用户重定向到上一页(yii2)

发布时间:2020-12-13 22:52:46 所属栏目:PHP教程 来源:网络整理
导读:我有一个主控制器,其他的继承.代码是这样的 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 (!($reque
我有一个主控制器,其他的继承.代码是这样的

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());
              }
           }
        }
        ...
    });
}

它适用于所有页面,但带有验证码的页面除外.所有带验证码的页面都被重定向到这样的东西 – / captcha /?v = xxxxxxxxxxxxxx

如果对象被记录Yii :: $app-> getRequest(),那么我看到对于具有验证码的页面,它被使用了两次.第一次对象是corect,第二次我用captcha看到对象.
如何用yii解决这个问题?有没有机会不跟踪验证码的请求?

解决方法

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

public function actions()
{
    return [
        'captcha' => [
            'class' => 'yiicaptchaCaptchaAction',],];
}

你的控制器是否包含这样的东西?

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

我想你必须过滤掉这个动作.

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

参考:Class yiiwebController

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读