Мы запускаем приложение Symfony 2.1, которое имеет, скажем, домен www.foo.com
там логин не проблема вообще. Но у нас есть второй сайт www.bar.com
который в основном просто www.foo.com/bar
с прокси переписать
RewriteCond %{HTTP_HOST} ^(www\.)?bar\.com$ [NC]
RewriteRule ^(.*) http://www.foo.com/bar$1 [L,P,NE]
Это тоже работает как шарм, кроме логина. Меня всегда перенаправляют на www.foo.com/login
и, конечно, логин cookie устанавливается только для домена www.foo.com
, Есть ли способ рассказать Symfony о втором домене?
К сожалению, Symfony 2.1 довольно старый, поэтому описанная ниже функция будет недоступна до тех пор, пока вы не обновитесь. 2.7 выйдет к концу месяца и будет LTS-версией, так что, возможно, сейчас самое подходящее время.
Я считаю, что вы ищете отдельный брандмауэр для вторичного сайта. В Symfony вы можете определить брандмауэр по имени хоста:
http://symfony.com/doc/current/cookbook/security/firewall_restriction.html#restricting-by-host
Таким образом, вы могли бы иметь:
security:
firewalls:
foo_site:
host: ^foo\.com$
# ...
bar_site:
host: ^bar\.com$
# ...
Если вы хотите войти в оба одновременно, вы можете установить одинаковый контекст брандмауэра. По умолчанию контекст для двух вышеупомянутых межсетевых экранов будет foo_site и bar_site. Хотя я не уверен, что это будет работать, так как ваши брандмауэры определяются разными хостами и поэтому будут иметь разные куки.
Вот ссылка на контекстную ссылку брандмауэра:
http://symfony.com/doc/current/reference/configuration/security.html#firewall-context
А вот ссылка на все параметры безопасности по умолчанию. Я нахожу это довольно полезным при попытке увидеть, что доступно:
http://symfony.com/doc/current/reference/configuration/security.html#full-default-configuration
Удачи!
Других решений пока нет …