Rails:一个有2个域的应用程序 – 共享身份validation

我的网站在Heroku上的mydomain.com上进行了Devise身份validation。

我买了一个简短的urlme.do我也指向我的同一个Heroku应用程序。

当用户登录mydomain.com时,我也需要他们登录me.do所以当他们去me.do登录mydomain.com后,他们不必再次登录。

如何在mydomain.com和me.do上使用Devise共享身份validation会话?

没有简单的方法可以跨域共享身份validation,因为身份validation通常绑定到cookie(会话),这些cookie只绑定到一个域,并且不能跨域访问。

您可以设法做到这一点的唯一方法是确保在登录时在两个域上设置cookie。 您可以通过重定向循环执行此操作:

  • 登录请求到达domain1(例如从登录表单)
  • 您为domain1设置会话cookie
  • 然后重定向到domain2并在那里设置会话cookie
  • 然后将用户重定向回domain1(继续他最初去的地方)

要确保这不是无限循环,您必须在重定向中添加一些参数以了解如何处理这种情况。

但如果可能的话,我会建议你不要这样做。 没有独特的域名是非常糟糕的做法。 甚至允许带有www和不带域名的域名可能会给用户带来相当多的混乱,给开发人员带来很多麻烦 – 在你的情况下,情况会更糟。

会议不像通常那样有用。 设置其他cookie或会话值不再起作用(除非您每次都进行循环)。 直到用户实际使用第二个域他的会话甚至可能已经过期(取决于您的身份validation框架如何处理它)。 这些只是您可能遇到的一些问题。