具有Fosuserbundle防火墙的Symfony2从子域重定向到主域

时间:2014-09-23 19:22:19

标签: php symfony fosuserbundle

我有一个包含3个子域的Symfony2应用程序:

  • 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 个答案:

答案 0 :(得分:1)

您只需覆盖登录路由并在主安全配置中使用该路由。不要忘记将主机partemerter添加到新的登录路径。我认为这个答案可以帮到你:

Symfony 2 Login on main domain only