跨域会话:有关在JWT中存储会话ID的任何想法吗?

时间:2016-07-06 23:45:39

标签: php session cross-domain jwt

我正在开发一个PHP API应用程序,该应用程序将工作需要共享用户会话的不同域(并托管在不同的服务器上)。让我们说api.a.comapi.b.com

后端方面,对我来说,使用可以从多个域获取的session id密钥存储会话数据是很容易的部分。

我主要关心的是向session idapi.a.com发送api.b.com。本机PHP会话使用cookie为每个请求发送会话ID。拥有不同的顶级域名,cookie不会被发送到所有域名(除非我明确使用Javascript来提取它并将其作为请求标题发送)。

我考虑将session id存储在发送到服务器的Json Web Token数据中,但不知何故,感觉不对。

对此有何想法?

2 个答案:

答案 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”]);

>`