Пытаться перенаправить после входа в Symfony с помощью targetPath, но это всегда ноль - PullRequest
0 голосов
/ 23 сентября 2018

Я видел, что $this->getTargetPath($request->getSession(), $providerKey) может использоваться для получения целевого пути, но он всегда null.

Может кто-нибудь объяснить, для чего он предназначен и почему он всегда nullдля меня?

use Symfony\Component\Security\Http\Util\TargetPathTrait;


class LoginFormAuthenticator extends AbstractFormLoginAuthenticator
{

    use TargetPathTrait;

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

            if (!$targetPath) {
                $targetPath = $this->container->get('router')
                    ->generate('poll_index');
            }

            return new RedirectResponse($targetPath);
        }
}

1 Ответ

0 голосов
/ 23 сентября 2018

Единственное время target path устанавливается из Symfony, когда пользователь запускает поток аутентификации, проходя через точку входа аутентификации.Это делается с помощью ExceptionListener .Если вы используете FormAuthenticationEntryPoint, это происходит, когда вы пытаетесь получить доступ к закрытой странице, и вы (обычно) перенаправлены на страницу входа.В этот момент устанавливается target path.

Обычно нет причин устанавливать его самостоятельно, но вы можете сделать это, используя saveTargetPath в TargetPathTrait, например:

$this->saveTargetPath($request->getSession(), $providerKey, $request->getUri());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...