我需要为我的一个项目实现一个解决方案,我有多个域+多个子域,他们都需要共享同一个会话。所有域和子域都将指向连接到单个数据库的单个应用程序。
表示如果用户从任何域登录,将能够访问该应用程序的其他域的安全页面。用户可以通过链接或在浏览器中打开新选项卡来更改域名。
我已经阅读了一些文章,并找到了一些下面提到的解决方案: -
数据库中的会话 - 如果具有相同用户代理的同一网络中的其他用户点击该怎么办?
iFrame消息传递 - 我在某处听到,iFrame会在文档加载时呈现,然后在显示某些页面内容后检查会话会使用户烦恼。
使用CURLOPT_COOKIEFILE&的CURL请求CURLOPT_COOKIEJAR - 我玩过它并且工作正常,但不知道它是否安全且不是性能杀手。
单点登录(SSO) - 我需要一些R& D来实现这一点,这将是最后一个选项。
请建议做什么?
答案 0 :(得分:0)
只是为了验证我没有错,您需要在所有应用程序之间共享用户会话。
如上所述,您可以使用上述4个选项。但是,我想重点关注将会话放入数据库的第一个选项,并希望建议另一个选项,即在共享目录或服务器中保留会话。
数据库中的会话 - 您的问题的答案(如果来自同一网络的其他用户点击同一个用户代理怎么办?)您会有不同的会话id唯一标识表中每一行的值。所以,不用担心它。但缺点是,每次需要数据库连接时,如果初始化会话,即每个页面都会触发查询。
共享目录/服务器中的会话 - 以所有应用程序在共享位置存储会话的方式配置所有应用程序。共享位置可以是目录或安全服务器。使用session_set_save_handler。