【问题标题】:Multiple apps, one database. how to do cross session for users?多个应用程序,一个数据库。如何为用户做跨会话?
【发布时间】:2014-08-08 17:38:54
【问题描述】:

我有两个 Symfony 应用程序。他们指向同一个数据库以共享一些表。 因此,一个用户可以使用相同的用户名和密码登录 app1 和 app2。但是会话被阻止,因为应用程序已登录。我正在使用 FosUserBundle。

我的问题是,如何将会话分享给不同的应用程序?

我尝试在 config.yml 这两个应用程序上添加这一行:

framwork:
  session:
    cookie_domain: .my-domain.com
    name: SFSESSID

确实 app1 在 app1.my-domain.com 上可用,而 app2 在 app2.my-domain.com 上可用

第二个可能的答案是在我查看我的第二个应用程序的会话时监听登录事件并执行登录。对吧?

谢谢。

【问题讨论】:

    标签: php symfony session cross-domain


    【解决方案1】:

    不幸的是,它不会以这种方式工作,因为用户只会在其中一个域上拥有您的 cookie。您可以创建一个 API 来共享有关用户是否已登录并识别他是谁的信息,但正确的方法是创建第三个应用程序 - 单点登录,该应用程序仅用于登录和授权用户。您当前的两个应用程序将始终使用 SSO 授权和验证用户。

    要实现这一点,您可以将https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/ 用作服务器,将https://github.com/hwi/HWIOAuthBundle 用作客户端。

    或者,如果您想快速完成此操作但很麻烦,您可以创建一个 JS 脚本,该脚本将调用第二个页面并在那里创建自己的 cookie。但如果有人问你,我没有向你推荐。

    彼得

    【讨论】:

    • 我明白,但在这个网站上,他们解释了如何在跨子域上进行会话。它不是一个好的解决方案? elao.com/blog/symfony-2/…
    猜你喜欢
    • 2019-12-07
    • 2011-06-24
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    相关资源
    最近更新 更多