2014-09-23 34 views
0

我有3子域一个Symfony2的应用程式:Symfony2中与Fosuserbundle防火墙从子域重定向到主域

  • domain.com
  • app.domain.com
  • api.domain.com

%domain%参数是:domain.com

我有这样的安装路由:

domain_app: 
    resource: "@DomainAppBundle/Controller/" 
    type: annotation 
    prefix:/
    host: "app.%domain%" 

domain_api: 
    resource: "@DomainApiBundle/Controller/" 
    type: annotation 
    prefix:/
    host: "api.%domain%" 

domain_front: 
    resource: "@DomainFrontBundle/Controller/" 
    type: annotation 
    prefix:/
    host: "%domain%" 

fos_user: 
    resource: "@FOSUserBundle/Resources/config/routing/all.xml" 
    host:"%domain%" 

和安全性是这样的:

firewalls: 
    main: 
     pattern: ^/ 
     host: "%domain%" 
     form_login: 
      provider: fos_userbundle 
      csrf_provider: form.csrf_provider 
      always_use_default_target_path: false 
      default_target_path: front 
     logout:true 
     anonymous:true 

access_control: 
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/admin/, role: ROLE_ADMIN } 
    - { path: ^/, roles: ROLE_USER, host: "app.%domain%" } 
    - { path: ^/, roles: ROLE_USER, host: "api.%domain%" } 

我的子域的应用程序和API固定像我想http://domain.com/login完美的工作。

但是,如果我没有登录时,我直接加载http://app.domain.com,我重定向到 http://app.domain.com/login。 我不想在子域上重定向,我想要防火墙重定向,如果没有记录只在主http://domain.com/login

任何人都可以帮我吗?

谢谢;)

回答

1

你只需要重写登录路由并将其用于主安全配置。不要忘记将主机partemerter添加到新的登录路径。我认为这个答案可以帮助你:

Symfony 2 Login on main domain only

+0

感谢您的帮助!它完美的工作;) – 2014-09-23 21:38:22