2

我的网站在 Heroku 上的 mydomain.com 上,使用 Devise 身份验证。

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

当用户在 mydomain.com 上登录时,我还需要他们在 me.do 上登录,因此当他们在 mydomain.com 上登录后转到 me.do 时,他们不必再次登录。

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

4

1 回答 1

1

跨域共享身份验证没有简单的方法,因为身份验证通常绑定到仅绑定到一个域且无法跨域访问的 cookie(会话)。

您可以设法拥有这样的东西的唯一方法是确保您在登录时在两个域上都设置了 cookie。您可以通过重定向循环执行此操作:

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

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

但如果有可能避免它,我会建议你不要执行此操作。没有唯一域是非常糟糕的做法。即使允许带有 www 和不带 www 的域,也会给用户带来相当多的困惑,给开发人员带来很多麻烦——在您的情况下,情况会更糟。

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

于 2013-04-03T10:55:41.120 回答