CMS - Joomla! 2.5
任务 - 当我登录www.domain.com(A)时,我应该自动登录test.domain.com(B),反之亦然。
的实施
当我访问站点A时,会话cookie被设置为具有会话ID。登录到站点A后,将检查用户凭据,然后使用用户ID更新j25_session表中的会话记录。完成此操作后,我可以自由地浏览站点A,因为会话ID在会话cookie上。
存储在cookie中的cookie ID和会话ID在站点B上是相同的。这是因为我已将两个网站上的cookie域设置为.domain.com,并且我在配置文件中使用相同的秘密值。此外,站点B可以访问站点A的会话数据,因为这些表正在共享(创建的视图)。
理想情况下,即使我从站点A移动到B,会话应该是有效的,我应该登录
问题
当我从站点A移动到B时会话变得无效。据我调查,这是由于登录表单中的令牌。表单中的令牌和会话中保存的令牌不同,这会使会话死亡。
有什么想法吗?
答案 0 :(得分:1)
如果您想手动执行此操作,则需要面对一些问题。 首先,有一个很好的组件 - JFusion 有很好的支持,但我不确定它是否允许两个joomla站点之间的双向会话。检查一下,如果不是几天,你可以节省很多时间!
为了向某人验证不同的joomla站点,必须在站点A和站点B的#__users表中使用相同的数据库记录,并且除了相同的会话cookie之外,还具有相同的ID和用户名。
解决这个问题的几种方法:
为了在2个Joomla网站之间共享有效会话,两者都需要访问相同的会话cookie和#__sessions表,您已经根据我的理解实现了这一点,对吗?
如果没有,这是你必须面对的最大问题。解决问题的几种方法:
另一个是:
另一个,也是最好的解决方案:
即使您实施共享会话,也可能需要面对此问题。站点A和站点B上的会话将具有不同的到期时间。这意味着当您在站点A上登录时,站点B上的会话可能会提前到期,以便您在访问时不会登录站点B.
您可以通过以下方式解决:
要实现这一目标还有很多工作要做,但即使您决定手动检查一些扩展程序,也只是为了了解它们是如何做到的。 祝你好运