我的目标是为这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 是放置在 / var / webroot 之外的其他目录上的symfony-app的sf web文件夹的符号链接)。对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:
FOS\UserBundle\Model\UserInterface: 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后收到此错误消息:在config_dev.yml中为true:
此请求重定向到http://somedomain.com/symfony-app/app_dev.php/login。 Web调试工具栏拦截了重定向以帮助调试。有关更多信息,请参阅Profiler的“拦截重定向”选项。
应用程序在apache vhost上使用效果很好,但每个都在完全不同的URL上。当我尝试将所有3个应用程序作为子目录时,对.htaccess或security.yml没有进行任何修改。
我是否错过了security.yml中的任何配置?的.htaccess?
任何帮助将不胜感激。 TIA。
答案 0 :(得分:0)
在第一次提示时,没有进入细节,它闻起来像你的会话混合。尝试设置Cookie路径配置http://symfony.com/doc/current/reference/configuration/framework.html#cookie-path
编辑 - 要求进一步解释
会话cookie是在会话开始时由PHP生成的,以便能够跟踪用户进一步访问以及她对您的Web应用程序发出的http请求。默认情况下,cookie域设置为发出请求的域,示例中为“somedomain.com”,路径为/。因此,所有这3个网络应用程序将共享相同的会话cookie - somedomain.com with path /。我的意思是你应该在你的所有3个网络应用程序中设置cookie路径,这样他们每个人都可以拥有自己的会话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:
他们不会重复使用其他应用的会话Cookie。
但是,不太确定这是不是你的问题,但这是我注意到的第一件事。你可能会打开app1,然后是app2,它从app1获取了cookie,但是没有从cookie中找到该id的会话数据,因为它保存在app1会话存储中,你就自己进入了循环。