我正在构建一个多租户应用程序,其中帐户的范围在子域下。假设acme.com是我的应用程序,Elmer是我的用户,当 Elmer 在 acme.com 注册时,他会被转移到 elmer.acme.com。我想在 Elmer 注册后签到他,但我很难过。我正在使用cookies。这是我的登录方法:
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
current_user = user
end
这是我的 Users#create 方法的一部分,用户可以在其中登录。
if @user.save
sign_in(@user)
redirect_to root_url(subdomain: @user.subdomain)
end
当 Elmer 仍在acme.com 时,cookie 正在设置。当 Elmer 被重定向到elmer.acme.com时,cookie 无效。
我可以domain: :all
在 my中设置session_store
,但这打破了要求。这将意味着 Elmer 将加入elmer.acme.com
,buggs.acme.com
和本质上*.acme.com
。Elmer 的会话 cookie 应仅对elmer.acme.com和/或acme.com有效。
知道如何实现这一目标吗?我正在运行带有 Ruby 1.9.3 的 Rails 3.2。