Как войти в Symfony с помощью внешнего почтового вызова, который возвращает json со статусом

войдите в Symfony с помощью внешнего почтового вызова, который возвращает json

 <form class = "form-signin" action = "example.com/user/login"method = "post">


                 {% if is_granted('ROLE_APP') %}
                  You are logged 
                 {% else %}
                 You are not logged !
                 {% endif %}


   <label for = "inputEmail" class = "sr-only">Username</label>
   <input type = "text" name = "username" class = "form-control" placeholder = "username" required autofocus>
   <label for = "inputPassword" class = "sr-only">Password</label>


   <input type = "password" name = "password" class = "form-control" placeholder = "password" required>


 <button class = "btn btn-lg btn-primary btn-block" type = "submit">Sign in</button>

если вызов внешнего api вернет json правильно, но как я могу установить роль пользователя, который в json возвращается с помощью ok?

Благодарность

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
0
104
1

Ответы 1

Вместо того, чтобы устанавливать действие формы, так как action = "example.com/user/login" устанавливает какое-то действие в вашем контроллере. Затем в этом контроллере вызовите внешний api, прочтите json и, если все в порядке, войдите в систему программно. Например:

public function handleExternalApiLogin(Request $request, $token, GuardAuthenticatorHandler $handler, LoginFormAuthenticator $loginFormAuthenticator)
{
    ... //<- call external api and check if everything is ok

    $user = ... //get user that you want to be logged

    if ($user) {
        $handler->authenticateUserAndHandleSuccess($user, $request, $loginFormAuthenticator, 'main'); // <- here 'main' is your firewall name

        return $this->redirectToRoute('some_route_to_redirect_user_to');
    }

    return $this->redirectToRoute('route_where_login_form_is');
}

/ ** * @Route ("/ app") * / public function appAction (Request $ request, $ token, GuardAuthenticatorHandler $ handler, LoginFormAuthenticator $ loginFormAuthenticator) {$ status = '200'; если ($ status = '200') {$ handler-> AuthenticateUserAndHandleSuccess ($ user, $ request, $ loginFormAuthenticator, 'main'); // <- здесь 'main' - имя вашего брандмауэра return $ this-> redirectToRoute ('esterne / app.account2.html.twig'); } return $ this-> redirectToRoute ('esterne / app.html.twig'); }

cris 10.01.2019 09:03

но не понимаю, нормально ли :(

cris 10.01.2019 09:03

Другие вопросы по теме