在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看到对象. 解决方法
默认(生成)控制器使用如下所示的内容:
public function actions() { return [ 'captcha' => [ 'class' => 'yiicaptchaCaptchaAction',],]; } 你的控制器是否包含这样的东西? 这意味着有一个动作“验证码”用于显示验证码(它返回图像).当您有一个显示验证码的页面时,将在您要返回的页面之后调用该图像.因此,访问的最新页面是具有验证码的页面. 我想你必须过滤掉这个动作. 另一种可能是使用默认的$controller-> goBack()方法.我认为这默认处理returnUrl的注册. 参考:Class yiiwebController (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |