7

我在 SOF 上看到了一些对此的答案,但其中大多数都与子域的使用有关,其中没有一个对我有用。常见的一种是使用session.cookie_domain,据我了解,它仅适用于子域。

我对处理完全不同的域(并且包括子域的可能性)的解决方案感兴趣。不幸的是,项目的最后期限就是这样,时间不在我这边,所以我求助于 SOF 的专业知识和经验。

当前的项目简介是能够登录到当前仅将 存储user_id在会话中的一个站点,然后能够在同一服务器环境中的不同域上检索此值。会话数据正在从作为session id主键的数据库中存储/检索。

我希望找到一个“轻量级”和“容易”实施的解决方案。

该系统正在使用内部模型视图控制器设计模式,因此所有请求(包括不同的域)都通过单个引导脚本运行。使用域名作为变量,这决定了向用户显示的上下文。

一个看起来很有潜力的选项是使用隐藏图像并使用 alt 标签来设置user id. 我的第一印象表明这似乎“太容易了”(如果可能的话)并且充满了安全漏洞。讨论?

我考虑的另一个选项是使用 IP 和用户代理进行身份验证,但由于共享网络和更改 IP 地址,我再次觉得这不是一个可靠的选项。

我考虑过但尚未讨论过的第三个选项(也是首选)是htaccess用来欺骗用户,当实际上 apache 正在重定向时,他们认为他们在不同的域上;就像是

www.foo.com/index.php?domain=bar.com&controller=news/categoires/1
但向用户显示为
www.bar.com/news/categories/1

foo.com代表所有请求都经过的“主站点域”,并且bar.com是用户认为他们正在访问的内容。控制器请求指示所请求的页面和视图。这可能吗?

还有其他选择吗?优点缺点?

提前致谢!!!

4

3 回答 3

0
  1. 定义一个主会话服务器(我与 memcached 结合使用)

  2. 使用 Ajax / JSON(P) 从该服务器请求会话,这允许您在多个域上共享会话

  3. 重用此会话

于 2014-03-05T10:43:50.023 回答
0

您是否考虑过使用session_set_save_handler。您可以将会话存储在数据库中并从任何域访问它们。

于 2010-04-23T21:03:51.430 回答
-3

为了让其他对此功能感兴趣的人受益,恐怕没有简单的答案。谷歌“单点登录”,它会带着技术和一些可用的解决方案回来。

至于使用 htaccess 隐藏域名,这是不可能的,因为它可能被用于恶意活动。

我现在已经成功地实施了一个系统来满足我的要求。

于 2010-04-25T20:20:11.603 回答