2

secure.example.comを指すログインフォームがあり、セッションを初期化してからwww.example.comにリダイレクトします。

リダイレクトされると、セッションは作成されません。secure.example.comに戻ると、セッションが作成されます。これは、私が思うようにCookieがどのように機能するかの制限ですか?

もちろん、session_storeにドメイン:: allを追加しましたが、同じ結果になりました。

Ruby onRails3.2を使用しています

4

3 に答える 3

1

構成したとおり、構成は問題ありませんdomain: :allでした。必要なのはそれだけです。

domain: :all私の場合の問題は、次のようにすべてのCookieでを定義する必要があることでした。

cookies[:new_cookie] = { :value => "value", domain: :all }

そしてそれらを削除するとき:

cookies.delete :new_cookie, domain: :all

この変更後、すべてが期待どおりに機能します。

于 2012-12-04T10:07:41.630 に答える
0

example.comを所有し、Cookieドメインを正しく定義している限り、問題はありません。ここには、Cookieがどのように機能するか(または、作成者が言うように、ブラウザーが実際にCookieをどのように実装するか)に対する非常に良い答えがあります。ブラウザーのCookieドメインはどのように機能しますか?

Railsでは:domain、Cookieを設定するときに適切な値を渡すだけです。

于 2012-12-04T00:55:34.927 に答える
0

両方のアプリで同じ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がセッションに存在するかどうかを確認する必要があります。

これは全体的なスキーマです。このアイデアを使用して、さらに詳しく説明することができます。

于 2012-12-04T04:50:36.683 に答える