我有一个Rails论坛产品,它位于我的客户的子域下(即http://forum.customer.com)。他们的主站点有一个CMS和一个身份验证系统,我的论坛产品有一个单独的身份验证系统。是否有一种优雅的方式在这些系统中进行“交叉登录”?我希望已经登录主CMS的人能够无缝地(尽可能)过渡到我的产品。
答案 0 :(得分:0)
这完全取决于主站点如何跟踪用户的会话。
通常使用cookie来完成;我只是假设它是。浏览器会将此Cookie 存储在其中,并将其与任何新请求一起附加到该域或子域。
您需要检查Cookie是否已附加到customer.com
域,而不是www.customer.com
。这是因为forum.customer.com
是前者的子域,而不是后者。在后一种情况下,不会在您的论坛软件中看到cookie。 CMS软件可以控制cookie附加到哪个确切的域。
大多数浏览器都可以选择向您显示为特定网站存储的Cookie。例如,Firefox在右键菜单中有一个“页面信息”选项。在Chrome中,您可以点击 Ctrl + Shift + I 来访问开发人员工具,然后在“存储”标签下查看。
Cookie可能包含以下内容之一:
在任何一种情况下,它都可能包含盐渍哈希,这可以防止用户篡改cookie的数据。
您可以使用控制器内的cookies[:something]
按名称访问Rails中的cookie。这在ActionController::Cookies中有记录(混合到ActionController::Base
中)。
获得Cookie的数据后,您必须模仿您的CMS所做的一切。你可能必须(按顺序):