Задать вопрос

Yii2. Редирект пользователя на предыдущую страницу после авторизации

Есть главный контроллер, от которого унаследуются все остальные. В коде контроллера есть следующее:
public function init()
    {
        $this->on('beforeAction', function ($event) {
            ...
            // запоминаем страницу неавторизованного пользователя, чтобы потом отредиректить его обратно с помощью  goBack()
            if (Yii::$app->getUser()->isGuest) {
                $request = Yii::$app->getRequest();
                // исключаем страницу авторизации или ajax-запросы
                if (!($request->getIsAjax() || strpos($request->getUrl(), 'login') !== false)) {
                   Yii::$app->getUser()->setReturnUrl($request->getUrl());
                  }
               }
            }
            ...
        });
    }

Для всех страниц это работает корректно, но кроме страниц с captcha. Для страниц captcha редирект идет на нечто подобное /captcha/?v=xxxxxxxxxxxxxx
Если залогировать объект Yii::$app->getRequest(), то получается, что для страниц с captcha он вызывается дважды. В первый раз как раз таки нужный мне объект, во второй раз - объект с captcha.
С помощью средств yii2 возможно решить этот вопрос, а именно получать нужный мне request? (возможно как-то убрать request для captcha?)
  • Вопрос задан
  • 7116 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
SamDark
@SamDark
Yii2 core team
Не пишите setReturnUrl для /captcha/?v=xxxxxxxxxxxxxx.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы