我正在开发一个PHP API应用程序,该应用程序将工作需要共享用户会话的不同域(并托管在不同的服务器上)。让我们说api.a.com
和api.b.com
。
后端方面,对我来说,使用可以从多个域获取的session id
密钥存储会话数据是很容易的部分。
我主要关心的是向session id
和api.a.com
发送api.b.com
。本机PHP会话使用cookie为每个请求发送会话ID。拥有不同的顶级域名,cookie不会被发送到所有域名(除非我明确使用Javascript来提取它并将其作为请求标题发送)。
我考虑将session id
存储在发送到服务器的Json Web Token
数据中,但不知何故,感觉不对。
对此有何想法?
答案 0 :(得分:1)
使用内存缓存服务器。 PHP支持在memcache中保存会话。
使用亚马逊,我有一个Linux实例的负载均衡器,每个都连接到memcache。
然后我有一个完全不同的EB应用程序和域来访问相同的内存缓存并提取实时统计数据,因此很容易设置从不同应用程序访问同一个内存缓存服务器或集群。
注意" memcache"之间存在差异。和" memcached" - 可以使用,但它们是不同的服务器!
答案 1 :(得分:1)
使用内存缓存服务器。 PHP支持在memcache或mysql中保存会话。 然后通过http transport使用sessionid。
`
$ sid = $ _REQUEST ['sid']; //收到sessionid
在session_start();
SESSION_ID($ SID); //通过$ sid重置当前的sessionid
的var_dump($ _ SESSION [ “A_DOMAIN_SESSION”]);
的var_dump($ _ SESSION [ “B_DOMAIN_SESSION”]);
>`