我非常接近一个优雅的跨域会话共享解决方案(我很乐意将它发布到 CakePHP 社区),但我需要最后一次轻推才能完成它。
Cake 的本地 DB 支持的会话处理似乎相当缺乏,但我讨厌在它之上进行破解。它似乎不支持从服务器 A(存在于数据库中)传递活动会话 ID (sid),然后在服务器 B 上使用该 ID(和完整的数据)启动一个新会话。
这是我得到的地方:
我设置 Security = Low,并测试单服务器登录等以确保会话正常运行。查看。
我成功地将 sid 字符串从服务器 A 传递到服务器 B。现在在服务器 B 上...
我运行 CakeSession::id($sid_from_server_a)。
我解析出会话数据库表中的数据字段,并通过 $this->Session->write('blah','value') 将它们存入活动会话。
我重新阅读了会议以确保它“接受”了。
但是当我导航到一个新页面时,活动 sid 只是快速回到一个完全不同的 sid,该 sid 与其他页面加载保持相同(即使我刷新从服务器 A 重新建立 sid 的页面)。
这是一个cookie问题吗?
我不确定要做什么,但绕过整个 Cake 范例。似乎 Cake 开发人员没有设计会话处理来帮助围绕多个域重新建立现有会话。我认为这是 DB 会话处理程序的主要优点之一。