secure.example.comを指すログインフォームがあり、セッションを初期化してからwww.example.comにリダイレクトします。
リダイレクトされると、セッションは作成されません。secure.example.comに戻ると、セッションが作成されます。これは、私が思うようにCookieがどのように機能するかの制限ですか?
もちろん、session_storeにドメイン:: allを追加しましたが、同じ結果になりました。
Ruby onRails3.2を使用しています
secure.example.comを指すログインフォームがあり、セッションを初期化してからwww.example.comにリダイレクトします。
リダイレクトされると、セッションは作成されません。secure.example.comに戻ると、セッションが作成されます。これは、私が思うようにCookieがどのように機能するかの制限ですか?
もちろん、session_storeにドメイン:: allを追加しましたが、同じ結果になりました。
Ruby onRails3.2を使用しています
構成したとおり、構成は問題ありませんdomain: :all
でした。必要なのはそれだけです。
domain: :all
私の場合の問題は、次のようにすべてのCookieでを定義する必要があることでした。
cookies[:new_cookie] = { :value => "value", domain: :all }
そしてそれらを削除するとき:
cookies.delete :new_cookie, domain: :all
この変更後、すべてが期待どおりに機能します。
example.comを所有し、Cookieドメインを正しく定義している限り、問題はありません。ここには、Cookieがどのように機能するか(または、作成者が言うように、ブラウザーが実際にCookieをどのように実装するか)に対する非常に良い答えがあります。ブラウザーのCookieドメインはどのように機能しますか?
Railsでは:domain
、Cookieを設定するときに適切な値を渡すだけです。
両方のアプリで同じsession_keyを設定できます。appA environment.rbで、次のようにsession_keyを変更します
Rails::Initializer.run do |config|
...
config.action_controller.session = {
:session_key => '_portal_session',
:secret => '72bf006c18d459acf51836d2aea01e0afd0388f860fe4b07a9a57dedd25c631749ba9b65083a85af38bd539cc810e81f559e76d6426c5e77b6064f42e14f7415'
}
...
end
AppBでも同じようにします。(まったく同じ秘密を使用することを忘れないでください)
これで、セッションを共有できました。user_idというセッション変数を設定するrestfull_authenticationを使用するとします。appAで認証すると、セッションにuser_idが設定されます。ここで、appBでは、user_idがセッションに存在するかどうかを確認する必要があります。
これは全体的なスキーマです。このアイデアを使用して、さらに詳しく説明することができます。