0

アカウントがサブドメインでスコープされているマルチテナント アプリを構築しています。acme.comが私のアプリで、Elmerが私のユーザーであると仮定すると、Elmerが acme.com に登録すると、elmer.acme.com に転送されます。エルマーが登録した後にサインインしたいのですが、なかなかうまくいきません。クッキーを使用しています。私のサインイン方法は次のとおりです。

  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: :allsession_storeこれは要件に違反しています。これは、Elmer がelmer.acme.combuggs.acme.com、および本質的に にサインインすることを意味し*.acme.comます。Elmer のセッション Cookie は、 elmer.acme.comおよび/またはacme.comに対してのみ有効である必要があります。

これを達成する方法はありますか?Ruby 1.9.3 で Rails 3.2 を実行しています。

4

1 に答える 1

1

ユーザーのトークンログインを作成/許可する場合は、次のことができます。

  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
于 2012-06-14T22:48:09.937 に答える