symfony 5 панель инструментов веб-отладки показывает анонимность и не может перенаправить после onAuthenticationSuccess - PullRequest
0 голосов
/ 08 мая 2020
• 1000 и они даже указали, что если вы видите, что вы вошли как аноним, то просто обновите sh. Я сделал refre sh, но он по-прежнему отображается как анон.

web debug toolbar status

Как вы можете видеть на следующем снимке экрана, вход в систему прошел успешно, и он также показывает правильное имя пользователя:

console logs

Я начал смотреть первую часть учебника, перечисленную ниже, когда дошел до точки во второй Часть, в которой указывалось, что я должен посмотреть первую часть, которая имела смысл, что я мог что-то пропустить, но это была еще более старая версия Symfony, и в версии 5 все изменилось.

Первая часть учебника Вторая часть учебника

После просмотра руководств у меня все еще есть инструмент веб-отладки, показывающий анон. Теперь я использую React как форму для POST электронной почты и пароля - см. Следующий снимок экрана - это повлияет на то, как панель инструментов веб-отладки, но я не вижу, как это сделать, потому что консоль показывает, что система знает пользователя.

React login form

Кто-нибудь знает конфиг, который нужно изменить?

Я попытался изменить следующее в src \ Security \ TokenAuthenticator - getUser from:

        return $this->em->getRepository(User::class)
        ->findOneBy(['apiToken' => $credentials])
        ;

To:

return $this->em->getRepository(User::class)->findOneBy(['email' => $credentials['email']]);

Но никаких изменений, все равно отображается анон

Также, как заявляет субъект, я не могу перенаправить через onAuthenticationSuccess

public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
    // on success, let the request continue
    return new RedirectResponse($this->urlGenerator->generate('app_homepage'));
}

Я не понимаю, почему это не работает. Опять же, это потому, что я публикую через приложение React?

1 Ответ

0 голосов
/ 08 мая 2020

Оказывается, это потому, что я использую более старую версию браузера Firefox и вход в систему работает. Вы можете видеть на снимке экрана как Firefox, так и Chrome, что он работает Chrome

screen shot of both Chrome and Firefox browsers

Что касается перенаправления говорит, что PHPStorm говорил, что у меня нет urlGenerator, доступного в классе TokenAuthenticator. В результате я должен был заметить раньше, и вот что я сделал, чтобы исправить это:

В моем src \ Security \ TokenAuthenticator у меня есть следующее:

use Symfony\Component\Routing\Generator\UrlGeneratorInterface;

В моем конструкторе:

private $em;
private $urlGenerator;

public function __construct(EntityManagerInterface $em, UrlGeneratorInterface $urlGenerator)
{
    $this->em = $em;
    $this->urlGenerator = $urlGenerator;
}

Мой onAuthenticationSuccess:

public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
    // on success, let the request continue
    // redirect to some "app_homepage" route - of wherever you want
    return new RedirectResponse($this->urlGenerator->generate('app_homepage'));
}

Но он все еще не работает

Я пробовал

use Symfony\Component\HttpFoundation\RedirectResponse;

private $redirectResponse;

public function __construct(EntityManagerInterface $em, RedirectResponse   $redirectResponse)
{
    $this->em = $em;
    $this->redirectResponse = $redirectResponse;
}

public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
    // on success, let the request continue
    // redirect to some "app_homepage" route - of wherever you want
    return $this->redirectResponse->redirectToRoute('app_homepage');
}

Но PHPStorm сообщает мне, что он не может найти метод redirectToRoute в классе RedirectResponse

Единственное, что я обнаружил для работы с перенаправлением пользователей на домашнюю страницу после успешного входа, - это вход в мое приложение для входа в React. У меня есть asyn c для моего метода handleClick, после получения POST у меня есть setTimeout 3000, который использует простой javascript:

window.location.href = '/';

Я хотел бы знать ответ на вопрос, почему я не может перенаправить через созданный мною класс Authenticator, но, по крайней мере, кому-то, кто использует Firefox, не нужно будет удивляться, почему их инструмент веб-отладки не показывает, что пользователь успешно вошел в систему, но все еще показывает анон

...