Как перенаправить В Symfony, как перенаправить после аутентификации, на URL перед аутентификацией? - PullRequest
1 голос
/ 08 мая 2019

Я хочу, чтобы пользователь вошел в систему (страница входа) и был перенаправлен на страницу, на которой он находился до аутентификации.

Для информации я создал страницу входа в систему с помощью команды make:auth и перенаправления.(в коде) делается в этом коде в AppAuthenticator -классе:

public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
    return new RedirectResponse($this->urlGenerator->generate('page_to_redirect'));
}

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

И спасибо за ваш ответ.Я попробовал ваше решение, но у меня возникла другая проблема.На самом деле я нашел решение: когда я вхожу в контроллер (до входа в систему), я сохраняю маршрут для перенаправления в сеансе:

>     /**
>      * @Route("/blog", name="blog")
>      */
>     public function blog(Request $request)
>     {
>         $request->getSession()->set("referer","blog");
>         return $this->render('main/blog.html.twig', [
>             'controller_name' => 'MainController',
>         ]);
>     }

И в AppAuthenticator.php я получаю данные с помощью реферера:

public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey) {
    $url = $request->getSession()->get('referer');
    return new RedirectResponse($this->urlGenerator->generate($url));

}
0 голосов
/ 08 мая 2019

Похоже, вы используете GuardAuthenticator. В этом случае вы можете использовать TargetPathTrait, чтобы получить целевой путь из сеанса.

use TargetPathTrait;

...

public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
    $targetPath = $this->getTargetPath($request->session, $providerKey);

    return new RedirectResponse($targetPath);
}

Возможно, вы также захотите предоставить запасной вариант, например, вернуться на домашнюю страницу или прочитать информацию из другого места, например, из дополнительного URL-параметра запроса, который вы можете установить, или вы также можете прочитать его из заголовка, если вы включили use_referer в своем брандмауэре .

Поскольку целевой путь не является именем маршрута, вам не нужно использовать UrlGenerator для извлечения пути для этого имени маршрута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...