2015-04-23 42 views
3

我正在构建的网站每个用户都有一个子域名。默认域名是www.acme.com,我自己的网页将(例如)是marcel.acme.com。其他用户页面位于johndoe.acme.com下。现在发生以下情况: - www.acme.com显示我为登录状态。 - marcel.acme.com显示我已登录。 - johndoe.acme.com显示我为匿名。所有子域名的Symfony2会话

在我的config.yml我没设置

framework:
        session:
              cookie_domain: .acme.com

防火墙的定义^ /和同时使用form_login(FosUserBundle )和oauth。两者都有相同的行为。

在www.acme.com上登录确实重定向到marcel.acme.com,所以可能这就是为什么marcel和www都可以工作,但我怎样才能让所有的子域都能正常工作?

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      provider: fos_userbundle 
      csrf_provider: form.csrf_provider 
      login_path: /login 
      check_path: /login_check 
     oauth: 
      login_path: /login 
      failure_path: /login 
      check_path: /login 
      use_forward: false 
      default_target_path: /mytracker 
      provider: fos_userbundle 
      resource_owners: 
       facebook: /login/check-facebook 
      oauth_user_provider: 
       service: my_user_provider 
     anonymous: true   
     logout: 
      path: /logout 
      target:/

的Symfony的版本是2.6.5

+0

你可以从你的'security.yml'共享你的防火墙配置吗? 另外,您正在使用哪个版本的Symfony? – Restless

+0

添加了我原来的帖子的答案! –

回答

2

好像我设法解决这个问题。在我的配置我说:

session: 
    cookie_lifetime: 0 
    save_path: %kernel.root_dir%/var/sessions 
    cookie_domain: .acme.com 
    name: SFSESSID 

而且我加入到我的安全:

remember_me: 
    key:  "%secret%" 
    lifetime: 31536000 
    path: /
    domain: .acme.com 

这不应该需要最后一部分BT我无论如何要实现remember_me功能。谢谢你的想法,也许有人会得到这个帮助。

+0

对不起。我无法更快检查。 我正要建议你设置会话'name'参数,但即使这样做对我来说并不需要这个工作(我尝试过,没有它)。 此外,'main'防火墙的'remember_me'部分不应该像你所说的那样必要。 无论如何,很高兴你的工作。 :) – Restless