Страница входа в Symfony 5 перенаправляется на страницу входа после отправки, сеанс продолжает увеличиваться в таблице сеансов

#php #symfony #session

#php #symfony #сеанс

Вопрос:

Symfony 5 login не показывает никаких ошибок на странице входа с неверными учетными данными и перенаправляется на страницу входа, если это правильные учетные данные.

 public function getUser($credentials, UserProviderInterface $userProvider)
{
    $token = new CsrfToken('authenticate', $credentials['csrf_token']);
    if (!$this->csrfTokenManager->isTokenValid($token)) {
        throw new InvalidCsrfTokenException();
    }

    $user = $this->entityManager->getRepository(User::class)->findOneBy(['username' => $credentials['username']]);

    if (!$user) {
        // fail authentication with a custom error
        throw new CustomUserMessageAuthenticationException('Username could not be found.');
    }

    return $user;
}

public function checkCredentials($credentials, UserInterface $user)
{
    return $this->passwordEncoder->isPasswordValid($user, $credentials['password']);
}

public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $providerKey)
{
    if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
        return new RedirectResponse($targetPath);
    }

    return new RedirectResponse($this->urlGenerator->generate('reports'));
}
  

Комментарии:

1. И какой у вас вопрос по поводу всего этого кода?

Ответ №1:

Вот пример контроллера безопасности

 <?php

namespace AppController;

use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAnnotationRoute;
use SymfonyComponentSecurityHttpAuthenticationAuthenticationUtils;

class SecurityController extends AbstractController
{
    /**
     * @Route("/login", name="app_login")
     * @param AuthenticationUtils $authenticationUtils
     * @return Response
     */
    public function login(AuthenticationUtils $authenticationUtils): Response
    {
        if ($this->container->get('security.authorization_checker')->isGranted('ROLE_USER')) {
            return $this->redirectToRoute('car.index');
        }

         if ($this->getUser()) {

            return $this->redirectToRoute('car.index');
         }

        // get the login error if there is one
        $error = $authenticationUtils->getLastAuthenticationError();
        // last username entered by the user
        $lastUsername = $authenticationUtils->getLastUsername();

        return $this->render('security/login.html.twig', ['last_username' => $lastUsername, 'error' => $error]);
    }

    /**
     * @Route("/logout", name="app_logout")
     */
    public function logout()
    {

        throw new LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
    }
}
  

Комментарии:

1. Ужасно, вы должны вводить зависимости через конструктор.

2. Как этот контроллер относится к данному вопросу?

3. у меня то же самое .. Проблема в том, что тот же код работает на локальном сервере, но не в aws QA.