php - 在 PHP 中同一服务器上的多个域之间共享 session

标签 php session-cookies

我需要为我的一个项目实现一种解决方案,其中我有多个域+多个子域,并且它们都需要共享同一个 session 。所有域和子域都将指向连接到单个数据库的单个应用程序。

意味着如果用户从任何域登录将能够访问应用程序其他域的安全页面。用户可以通过点击链接或在浏览器中打开新选项卡来更改域。

我浏览了一些文章并找到了下面提到的一些解决方案:-

  1. 数据库中的 session - 如果来自同一网络的其他用户使用相同的用户代理命中怎么办?

  2. iFrame 消息传递 - 我在某处听说 iFrame 在文档加载时呈现,然后在显示某些页面内容后检查 session 会惹恼用户。

  3. 使用 CURLOPT_COOKIEFILE 和 CURLOPT_COOKIEJAR 的 CURL 请求 - 我已经使用过这个并且它工作正常,但不知道它是否安全并且不是性能 killer 。

  4. 单点登录 (SSO) - 我需要一些研发来实现这一点,这将是最后一个选择。

请建议该怎么做?

最佳答案

为了验证我没有错,您需要在所有应用程序之间共享用户 session 。

正如上面所说,您可以使用上面的 4 个选项。但是,我想重点关注第一个选项,即将 session 放入数据库,并建议另一个选项将 session 保存在共享目录或服务器中。

  1. 数据库中的 session - 您的问题的答案(如果来自同一网络的其他用户使用相同的用户代理点击怎么办?) 是您将拥有不同的 session id 的值用于唯一标识表中的每一行。所以,无需担心。但缺点是,每次初始化 session 时(即每个页面)都需要数据库连接并触发查询。

  2. 共享目录/服务器中的 session - 配置所有应用程序,使所有应用程序都将 session 存储在共享位置。共享位置可以是目录或安全服务器。这可以通过使用 session_set_save_handler 轻松实现.

关于php - 在 PHP 中同一服务器上的多个域之间共享 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32784615/

相关文章:

php - session_start() 在每次刷新时创建新 session

ruby-on-rails - 未设置安全 session cookie

ruby-on-rails-3 - cookie 过期时间与 activerecord session 存储

php - 如何优化我的 SQL 查询?

php - 将图像插入到 Prestashop 数据库

javascript - jQuery ajax 异步 'true' 让我的网络应用程序卡住,直到数据返回

php - 下拉框中的空格和重复

php - html 新手,在我的网站上遇到错误

Django session 在 Internet Explorer 中不起作用

python - Django : When is sessionid cookie set ? [默认可用吗? ]