【问题标题】:CakePHP session sharing between two apps, on the same domain同一域上的两个应用程序之间的 CakePHP 会话共享
【发布时间】:2011-03-01 02:10:05
【问题描述】:

我有两个 CakePHP 应用程序在同一个域上工作。

它们位于localhost:8080/wishlist 和localhost:8080/lighthouse。

“愿望清单”和“灯塔”是各自独立的 CakePHP 应用程序。

登录页面位于localhost:8080/lighthouse,我希望将灯塔应用程序生成的会话用于愿望清单应用程序。

目录结构是

/htdocs
    /wishlist
        /app
        /config
        ....
    /lighthouse
        /app
        /config
        ....

我已经为每个应用程序编辑了core.php 文件。我正在使用相同的会话 cookie 名称和相同的证券销售,但我无法在愿望清单应用程序上获得会话。

如何在我的两个应用程序之间共享会话?

【问题讨论】:

  • 附带说明,您的目录结构可以是/htdocs/wishlist/config、/htdocs/lighthouse/config、/htdocs/cake、/htdocs/vendors。按照惯例,这将允许两个应用程序共享相同的蛋糕安装和全局供应商目录,而无需任何手动配置,并且它将响应相同的 URL。一个常见的错误是认为不能重命名app 目录,但事实并非如此。 :)

标签: cakephp cakephp-1.3


【解决方案1】:

首先,安装Firefox、Firebug和Firecookie。这会在 Firebug 中添加一个“Cookies”选项卡,从而可以轻松检查您的 Cookie。

Cookie 由多个部分组成:名称、值、域、路径、过期时间等。我相信您最感兴趣的是 cookie 的“路径”部分。

默认情况下,CakePHP 会将每个 cookie 的路径限制在应用程序的子目录中。例如,当您访问/wishlist 时,会创建一个cookie,但它会被限制在/wishlist 子目录中。然后,当您转到 /lighthouse 时,之前的 cookie 将不适用,因此认为您没有 cookie/会话,因此会创建一个仅限于 /lighthouse 子目录的新 cookie。

您需要将创建的 cookie 的路径更改为 /,以便它们在所有子目录中持续存在。这应该就像将ini_set('session.cookie_path', '/'); 添加到两个应用程序的app/config/bootstrap.php 文件一样简单。

【讨论】:

  • 非常感谢该解决方案对我有用。我已经在这里发布了详细信息amityadav.name/…
【解决方案2】:

您应该将每一个都作为插件开发或在同一个应用程序中开发它们。我不确定为什么要在共享登录屏幕时开发两个单独的应用程序。

【讨论】:

  • 这是早期程序员所做的糟糕编程的结果。这是两个独立的应用程序,现在他们希望将它们合并。
猜你喜欢
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 1970-01-01
  • 2016-10-11
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
相关资源
最近更新 更多