Обновление Symfony с версии 4.1 до версии 4.4 authenticationutils servicelocator

symfony #authentication

#symfony #аутентификация

Вопрос:

Я пытаюсь обновить приложение Symfony с 4.1 до 4.4, и у меня ошибка аутентификации в SecurityController, который у меня есть

 public function loginAction (Request $request)
    {
        /* var AuthenticationUtils $authUtils */
        $authUtils= $this->get('security.authentication_utils');
        
        // get the login error if there is one
        $error = $authUtils->getLastAuthenticationError();
        
        // last username entered by the user
        $lastUsername = $authUtils->getLastUsername();

        return $this->render('admin/user/login.html.twig', array(
            'error'         => $error,
            'last_username' => $lastUsername,
        ));
    }

 

но после обновления у меня возникает эта ошибка
введите описание изображения здесь

как я могу решить эту ошибку?

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

1. Вы должны использовать внедрение конструктора или внедрить службу в действие контроллера

2. Просто для информации, вы получаете эту ошибку, потому что вы перешли с контроллера на AbstractController для вашего базового класса контроллера. Ожидайте увидеть ошибку такого рода каждый раз, когда вы используете $this->get() . Вы можете остаться с исходным классом контроллера, если хотите. Просто означает, что вы не можете обновиться до 5.x.

3. Как обычно, пожалуйста, делитесь всеми сообщениями об ошибках в текстовой форме вместе с вашими попытками решить проблему. Насколько я вижу, ошибка содержит довольно очевидный намек на то, как устранить ошибку

Ответ №1:

.. как упоминалось @dbrunmann

 public function loginAction (Request $request, AuthenticationUtils $authUtils)
    {        
        // get the login error if there is one
        $error = $authUtils->getLastAuthenticationError();
        
        // last username entered by the user
        $lastUsername = $authUtils->getLastUsername();

        return $this->render('admin/user/login.html.twig', array(
            'error'         => $error,
            'last_username' => $lastUsername,
        ));
    }
 

Использовать php bonconsole debug:autowiring <some_service_name> — чтобы узнать, какой typhint использовать для получения правильной службы

Например, php binconsole debug:autowiring utils даст вам

введите описание изображения здесь