【发布时间】:2016-10-17 10:12:18
【问题描述】:
我有 ServiceSite.com (SS) 和多个 GameSite.com。所有游戏都通过SS认证,然后用自己的个人数据库登录。这一切都通过一个简单的 JSON API 完成,无需登录 SS 即可进入游戏。
我的一个目标是登录游戏并通过游戏访问SS的功能,例如访问玩家的联系人列表和个人资料,这两者都是在所有游戏之间共享的。在GameSite.com/play 中,他们会点击指向ServiceSite.com/contacts 的链接并获得响应,就好像他们是从ServiceSite.com 打开它一样。我使用 JSON Web Tokens 手动将用户登录到 SS,以模拟真实登录到 ServiceSite.com。
只要他们在同一个域上,这行得通。意思是,当我正在开发游戏时,我将使用ServiceSite.com/tempgameurl 和任何对ServiceSite.com 的调用建立和保持会话没有问题。但是一旦游戏获得了自己的域,或者如果我在我的本地主机上工作,我就无法让它在后续请求中识别会话。如果我想要响应,我将始终必须传递 JWT 令牌,这不适合我正在做的事情。目标是加载游戏,“戳”SS 以创建登录,然后如果玩家访问ServiceSite.com,他们将拥有会话,就好像他们登录到ServiceSite.com 的首页一样他们手动登录。
简而言之,我希望一旦我收到我的第一个 JWT 请求并从 GameSite.com 在 ServiceSite.com 上进行会话,就是这样,会话就完成了。但它似乎只有在我从同一个域请求时才真正进行会话。我确实看到它正确地创建了一个会话,并填写了 $_SESSION,但是如果请求来自非ServiceSite.com URL,则该数据根本不会持久。
【问题讨论】:
-
您可以使用集中式会话存储,例如 Redis
标签: php session single-sign-on jwt