【发布时间】:2012-08-27 23:47:46
【问题描述】:
我非常接近一个优雅的跨域会话共享解决方案(我很乐意将其发布到 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 会话处理程序的主要优点之一。
【问题讨论】:
-
两者。每台服务器都在不同的域中。
标签: php session cakephp cakephp-2.0 single-sign-on