[英]Symfony2 firewall : keep user logged through subdomains
我为客户创建了3种工具。 每个客户都必须使用一个,两个或三个工具,具体取决于他所支付的费用。
我现在正在尝试将这3个工具连接到同一UserBundle。 每个工具都有其自己的子域: tool1.mysite.com
; tool2.mysite.com
和tool3.mysite.com
。
我定义了3个角色,每个工具1个。 我只保留了一个防火墙,主要的FOSUserBundle防火墙是在主机.mysite.com
上定义的,以便覆盖所有子域。
我的问题是 :我可以在任何子域中使用登录页面,但是似乎登录的用户仅保留在他登录的子域中。 如果我以“ User1”的身份登录“ Tool1”,则不会登录Tool2。 而且,如果我在Tool2上以User2身份登录,则在“ Tool1”上仍以“ User1”身份登录。
我不知道如何改变这种行为?
非常感谢 !
我的security.yml是以下内容:
firewalls:
main:
pattern: ^/
host: .mysite.com
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout:
path: /logout
target: /login
anonymous: true
access_control:
- { host: .mysite.com, path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { host: .mysite.com, path: ^/admin/, role: ROLE_ADMIN }
- { host: .mysite.com, path: ^/register, role: ROLE_ADMIN }
- { host: .mysite.com, path: ^/resetting, role: ROLE_ADMIN }
- { host: tool1.mysite.com, path: ^/tool1, role: ROLE_TOOL1 }
- { host: tool2.mysite.com, path: ^/tool2, role: ROLE_TOOL2 }
- { host: tool3.cospirit.com, path: ^/tool3, role: ROLE_TOOL3 }
role_hierarchy:
ROLE_TOOL1: [ROLE_USER]
ROLE_TOOL2: [ROLE_USER]
ROLE_TOOL3: [ROLE_USER]
通过在config.yml
文件中添加它,似乎可以更好地工作:
framework:
session:
name: SFSESSIDCSMT
cookie_domain: .mysite.com
我不知道哪种解决方案更好?
因为它是不同的子域,并且symfony将登录数据存储在cookie中,所以每个子域都有单独的数据。 我建议您创建3个防火墙,并向所有防火墙添加上下文密钥,然后添加一个通用值。
firewalls:
main:
pattern: ^/
host: main.mysite.com
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout:
path: /logout
target: /login
anonymous: true
context: main_context
second:
pattern: ^/
host: first.mysite.com
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout:
path: /logout
target: /login
anonymous: true
context: main_context
为此,也许您还必须更改symfony的cookie设置,但是我将首先尝试该解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.