symfony 应用程序与域/子域共享登录 cookie

Posted

技术标签:

【中文标题】symfony 应用程序与域/子域共享登录 cookie【英文标题】:symfony apps share login cookie to and from domain/subdomain 【发布时间】:2013-03-23 17:32:51 【问题描述】:

我们使用 symfony1.2 创建了一个项目,我们的主应用程序在我们的主域 www.example.com 上运行,现在我们创建了另一个应用程序,我们从子域 sd.example.com 运行,我们想要共享这两个应用程序的登录名,以便用户从根域或子域登录,他可以使用相同的登录名访问这两个应用程序。 注意: 我们有两个应用程序相同的数据库 我们有基于文件的登录系统

我在 example.com 的 factory.yml 和 sd.example.com 中这样做了,但它似乎不起作用

session_name: mysitesession session_path: %SF_CACHE_DIR%/sessions session_cookie_domain: .example.com

有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

两个 cookie 需要具有同名同域范围。在您的情况下,我认为您应该强制使用 cookie 名称:

  storage:
    class: sfSessionStorage
    param:
      session_name: my_site
      session_cookie_domain:  .example.com

【讨论】:

是的,我在两个应用程序 factory.yml 中使用了相同的 session_name,但它不起作用。 你是否使用相同的方式存储会话(相同的class)? 使用相同的方式存储会话,但两个应用程序的代码库不同。 我也只是将两个应用程序的会话文件夹指向相同的位置,但它仍然无法正常工作:( 以上所有信息对于启用与多个应用程序/子域的共享登录都是有效的,这是我的错误,另一个开发人员在主ProjectConfiguration.class中设置了会话存储路径,我更改了它并且它工作了。谢谢。【参考方案2】:

要共享托管在不同子域上的两个应用的登录信息,您需要在 "factories.yml"

中更改这些设置 使用相同的会话名称 使用相同的会话路径 使用与 .rootdomain 相同的 cookie 域名 example.com

factories.yml 贮存: 类:sfSessionStorage 参数: 会话名称:我的站点 session_path: %SF_CACHE_DIR%/sessions session_cookie_domain: .example.com sd.example.com

factories.yml 贮存: 类:sfSessionStorage 参数: 会话名称:我的站点 session_path:/var/www/vhosts/example.com/subdomain/mysd/session session_cookie_domain: .example.com

如果它不工作检查其他配置文件,可能是在任何其他配置/代码文件中覆盖的东西。

【讨论】:

以上是关于symfony 应用程序与域/子域共享登录 cookie的主要内容,如果未能解决你的问题,请参考以下文章

所有子域的 Symfony2 会话

Symfony2 子域防火墙在生产服务器上被忽略

如何在不同子域之间共享本地存储?

Windows Server 2012 域控 子域 只读域 辅助域

Firebase - 使用 firebase admin sdk 跨子域共享身份验证

如何在 Spring Security 中的子域之间共享会话