如何为注册并转移到其帐户子域的用户执行自动登录



我正在构建一个多租户应用程序,其中帐户的范围在子域下。假设 acme.com 是我的应用程序,而埃尔默是我的用户,当埃尔默在 acme.com 注册时,他将被转移到 elmer.acme.com。我想在埃尔默注册后签下他,但我很难。我正在使用饼干。这是我的登录方法:

  def sign_in(user)
    cookies.permanent[:remember_token] = user.remember_token
    current_user = user
  end

这是我的用户#创建方法的一部分,用户在其中登录。

if @user.save
  sign_in(@user)
  redirect_to root_url(subdomain: @user.subdomain)
end

当埃尔默还在 acme.com 时,饼干正在设置。当埃尔默被重定向到 elmer.acme.com 时,cookie无效。

我可以在我的session_store中设置domain: :all,但这违反了要求。这意味着埃尔默将被签入elmer.acme.combuggs.acme.com,并且基本上*.acme.com。埃尔默的会话 cookie 只对 elmer.acme.com 和/或 acme.com 有效。

知道如何实现这一目标吗?我正在运行带有Ruby 1.9.3的Rails 3.2。

如果您要为用户创建/允许令牌登录,则可以:

  1. 在用户模型上具有令牌
  2. 使用该令牌登录(重定向到特定 URL,或在存在 :token 时添加到身份验证系统以登录)

重定向代码示例:

if @user.save
  sign_in(@user)
  redirect_to root_url(user_id: @user.id, subdomain: @user.subdomain, token: @user.token)
end

最新更新