2

Herokuにカスタム ドメイン (mywebsite.com など) を使用して HTTP 経由で提供される Web サイトがあります。

ユーザーがログインしたいときは、HTTPS 経由で Heroku アプリケーションの非カスタム URL にリダイレクトします (私は安価でSSL エンドポイントに支払いたくないため、Piggyback SSLを使用します)。

次に、ユーザーがログインした後、トラフィックを暗号化する必要がなくなったため、ユーザーをカスタム ドメインにリダイレクトします。

flash[:notice]唯一の問題は、それらをリダイレクトする前に、 ( sinatra-flashを使用して) を使用してメッセージ (たとえば、「ログインに成功しました!」) を表示することです。しかし、ユーザーはこのプロセスであるドメインから別のドメインに移動するため、同じサーバー上にいるにもかかわらず、ドメイン X からのセッション データにドメイン Y からアクセスできないため、メッセージが表示されないと思います。

  • 問題に対する私の理解は正しいですか?
  • それを修正する正しい方法は何ですか?

2012 年 10 月 12 日の更新:

だから、私が最終的に行った解決策は少しハッキーです:

まず、レコードごとにランダムな文字列を含むフィールドをOneTimeFlash持つ新しいデータ モデル を追加しました。token次に、ユーザーがドメイン X にログインした後、新しいインスタンスを作成OneTimeFlashし、クエリ文字列のトークンを使用してドメイン Y にリダイレクトするようにしました。

# The model automatically generates a token before being created.
one_time_flash = OneTimeFlash.create(:message => "You've successfully logged in!")
redirect "#{DOMAIN_Y}/flash/#{one_time_flash.token}"

次に、サーバーがリクエストでこのトークンを検出すると、フラッシュが表示されます。

get "/flash/:token" do |token|
  one_time_flash = OneTimeFlash.first(:token => token)
  flash[:notice] = one_time_flash.message unless one_time_flash.nil?
  one_time_flash.destroy
  redirect "/
end

(誰かが混乱した場合に備えて、ORM はDataMapperです。)

私が言ったように:それはハッキーですが、うまくいきます。このアプローチで深刻な問題を考えられる人はいますか?

4

1 に答える 1

0

フラッシュは次のリクエストのためにのみ保存されるため、その状況ではドメイン間でフラッシュを使用できません。

HTML5 ローカルストレージを使用できます -ランダムなローカルストレージの説明またはhtml5 ローカルストレージに関する w3schools ウェブサイト

于 2012-10-12T16:21:44.533 に答える