Как перенаправить на внешний URL в выход из Symfony 4 - PullRequest
0 голосов
/ 05 февраля 2019

Просто интересно, есть ли простое решение для этого в Symfony 4. Обычно пользователи выходят из системы и отправляются обратно на домашнюю страницу.Но есть одна страница, где проверяется, что пользователь в настоящее время проходит проверку подлинности на другом сайте, если это неверно, у меня есть ссылка, которая выводит пользователя с моего сайта и перенаправляет на внешний сайт.Я справился с этим на старой версии сайта, основанной на Silex, используя следующую маршрутизацию контроллеров в app.php

$app->get('/logout', $app->factory(function() use($app) {
$pid = $app['request_stack']->getCurrentRequest()->query->get('pid');
$message = $app['request_stack']->getCurrentRequest()->query->get('message');
$redirect = $app['request_stack']->getCurrentRequest()->query->get('redirect');
return $app->redirect(FRAMEWORK_URL."/logout?pid=$pid&message=$message&redirect=$redirect");
})

);

Спасибо

Martyn

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Хорошо, так попробовал это

Я сделал новый маршрут в контроллере:

    /**
 * @Route("/redirectafterlogout/{url?/}", name="redirectafterlogout")
 */
public function redirectafterlogout($url)
{
    if($url == "/"){
        // redirects to the "homepage" route
        return $this->redirectToRoute('homepage');
    } else {
        return $this->redirect('http://'.$url);
    }
}

Я добавил это в security.yaml

logout:
            path:   logout
            target: 'redirectafterlogout'

он работает нормальнои выходит из системы и помещает меня на домашнюю страницу, если я использую обычную ссылку выхода из системы.Однако, если я попробую ссылку типа:

, она перенаправит меня, но, похоже, не выйдет из системы?Я могу вернуться со своим браузером, и я все еще вошел в систему?

Не знаете, что я делаю не так?

Спасибо

0 голосов
/ 05 февраля 2019

Установите значение logout.target для брандмауэра в security.yaml для внешнего URL:

    firewalls:
        main:
                ...
            logout:
                ...
                target: 'EXTERNAL URL'

Значение logout.target может быть URL-адресом или именем маршрута приложения.Маршрут приложения и связанный контроллер могут использоваться для создания целей динамического перенаправления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...