すべてが同じサーバーを指す完全に異なるドメインからアクセスされるアプリケーションがあるとしましょう*:
example.com、example.net、foobar.com、..。
以前は正常に機能していたDeviseベースの認証システムがあります。ただし、現在の目標は、サインインシステムにHTTPSを追加することです。問題は、結局のところ、同じIPアドレスで複数のHTTPSWebサイトをホストする方法がないことです**。この問題を解決するために、ログインページを常にhttps://secure.example.comにPOSTするように設定しました。私の知る限り、これは正常に機能しています。Deviseには何の問題もないようです。ただし、注意が必要なのは、ユーザーをfoobar.comにリダイレクトする必要があることです。これは、ユーザーがログインしていることも理解する必要があります。ログインフォームの非表示のパラメーターで戻るサイトを渡し、リダイレクトします。正常に動作します。ユーザーがログインしていることをfoobar.comに通知する方法はまだありません。
foobar.comに返されると、secure.example.comのユーザーのセッションCookieがfoobar.comの新しいCookieにコピーされるように設定できました。この部分は正常に機能しています。ただし、Railsコンソールでは、secure.example.comとfoobar.comに対するWebリクエスト(それぞれに同じCookieが送信されます)によって2つの完全に異なるセッションが生成されるため、Deviseがユーザーがログインしたことがないように動作するのも不思議ではありません。 foobar.com
これが機能しない理由を知っている人はいますか?2つの同一のWebリクエスト(リクエストURIのドメインのみが異なる-Firebugでも試しました)が、Rails3アプリで異なるが一貫性のある2つの完全に異なるセッションを生成する理由を知っていますか? 、セッションID?もっと要点を言えば、誰かがこれを機能させる方法を知っていますか?
*この演習では、これは避けられず、サイトをすべて異なるサブドメインでホストすることはできず、必要なドメインの数が多すぎて、それぞれに個別のIPアドレスを取得できないと想定します。
**サブドメインであり、*。example.com証明書を持っている場合を除きますが、それは重要ではありません。