#symfony #redirect #login
#symfony #перенаправление #войти
Вопрос:
Моя цель — иметь такие URL-адреса для этих 3 приложений:
http://somedomain.com/symfony-app/app_dev.php
http://somedomain.com/symfony-app2/app_dev.php
http://somedomain.com/symfony-app3/app_dev.php
ОБНОВЛЕНИЕ: все 3 приложения sf2 независимы друг от друга. Это означает, что между ними нет никакого взаимодействия.
Структура каталогов выглядит следующим образом:
/var/webroot/symfony-app
/var/webroot/symfony-app2
/var/webroot/symfony-app3
(где symfony-app — это символическая ссылка на веб-папку sf symfony-app, размещенную в каком-либо другом каталоге за пределами /var/webroot). То же самое с symfony-app2 и symfony-app3.
Проблема: я получаю цикл перенаправления на http://somedomain.com/symfony-app/app_dev.php/login всякий раз, когда я получаю доступ http://somedomain.com/symfony-app/app_dev.php
security.yml
security:
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
encoders:
FOSUserBundleModelUserInterface: sha512
firewalls:
main:
http_basic: ~
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
default_target_path: /admin #authentication required page
always_use_default_target_path: true
logout:
target: /login
anonymous: true
switch_user: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, role: IS_AUTHENTICATED_FULLY }
Получение этого сообщения об ошибке после установки intercept_redirects: true в config_dev.yml:
Этот запрос перенаправляет на http://somedomain.com/symfony-app/app_dev.php/login . Перенаправление было перехвачено панелью инструментов web debug для облегчения отладки. Для получения дополнительной информации см. Параметр «перехватывать-перенаправлять» профилировщика.
Приложение хорошо работает при использовании на виртуальном хостинге apache, но у каждого из них совершенно разные URL-адреса. Никаких изменений в .htaccess или security.yml не было сделано, когда я пытался использовать все 3 приложения в качестве подкаталогов.
Я пропустил какую-либо конфигурацию в security.yml? .htaccess?
Любая помощь будет оценена. TIA.
Ответ №1:
При первом намеке, без вдавания в подробности, кажется, что ваши сеансы смешиваются. Попробуйте установить конфигурацию пути к файлу cookie http://symfony.com/doc/current/reference/configuration/framework.html#cookie-path
РЕДАКТИРОВАТЬ — попросил объяснить немного подробнее
Файл cookie сеанса генерируется PHP при запуске сеанса, чтобы иметь возможность отслеживать дальнейшие посещения пользователя и http-запросы, которые он делает к вашему веб-приложению. По умолчанию домен cookie устанавливается на домен, в который был отправлен запрос, «somedomain.com » в вашем примере и путь к /. Таким образом, все эти 3 веб-приложения будут использовать один и тот же файл cookie сеанса — somedomain.com с помощью path /. Я имел в виду, что вы должны установить путь к файлам cookie во всех 3 ваших веб-приложениях, чтобы каждое из них могло иметь свой собственный файл cookie сеанса, как показано ниже:
# symfony-app/app/config.yml
framework:
session:
cookie_path: /symfony-app/
# symfony-app2/app/config.yml
framework:
session:
cookie_path: /symfony-app2/
# symfony-app3/app/config.yml
framework:
session:
cookie_path: /symfony-app3/
Таким образом, каждое приложение будет иметь свой собственный файл cookie сеанса:
- приложение 1 будет иметь домен somedomain.com и путь /symfony-приложение/
- app2 будет иметь домен somedomain.com и путь /symfony-app2/
- app2 будет иметь домен somedomain.com и путь / symfony-app3/
и они не будут повторно использовать сеансовые файлы cookie из других приложений.
Тем не менее, не совсем уверен, была ли это ваша проблема, но это было первое, что я заметил. Могло случиться так, что вы открыли app1, а затем app2, который получил файл cookie из app1, но не нашел данных сеанса для этого идентификатора из файла cookie, поскольку он был сохранен в хранилище сеансов app1, и вы попали в цикл.
Комментарии:
1. Не могли бы вы объяснить немного подробнее? Пока я настроил только 1 приложение sf, и я уже получаю этот цикл перенаправления. Я еще не добавил 2 других приложения.