要完全清楚,我绝对是指域名之间的共享会话,而不仅仅是子域名。
无论如何,想象一下Tumblr您可以通过转到<name>.tumblr.com
访问博客,但您也可以将其设置为使用自定义域。
我们正在尝试做类似的事情。您可以照常访问我们网站的一部分,也可以进行设置,以便您可以使用自定义域访问您的网站部分。
这里的重要部分是无论使用什么域,它都由同一个盒子处理。这不是SSO本身,因为我们只是从不同的域访问相同的Rails应用程序。
无论如何,问题是:最好的方法是,如果用户登录到我们的主站点,他们不必在通过自定义域访问我们的站点时再次登录。
基本上,我们希望这样做,以便用户登录一次,无论用户访问我们网站的域名是什么,他们都会保持登录状态。
感谢任何建议!
答案 0 :(得分:0)
您可以在主域中的iframe中存储会话,并通过postMessage访问它。
您可以加载iframe包含以下内容:
parent.postMessage(JSON.stringify({user_id: <%=@user.id %>, token: <%=@token %>, etc...}), '<%= @target_origin || '*'%>');
和页面上的事件监听器使用此iframe处理此消息:
var listener = function (e) {
if (e.origin === correctIframeTarget) {
var data = JSON.parse(e.data);
// etc...
};
if (window.addEventListener) {
window.addEventListener('message', listener);
} else {
window.attachEvent('onmessage', listener);
}
注意:应在iframe加载之前添加事件监听器。