我有一個網站,通過HTTP與自定義域(例如,mywebsite.com)在Heroku上提供。如何在域上使用flash [:notice]?
當用戶想要登錄時,我通過HTTPS將它們重定向到我的Heroku應用程序的非自定義URL(使用Piggyback SSL,因爲我便宜並且不想爲SSL Endpoint付費)。
然後,他們登錄後,我將用戶重定向到我的自定義域,因爲他們的流量不再需要進行加密。
唯一的問題是,在重定向它們之前,我使用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,如果任何人的混淆。)
就像我說:這是哈克,但它的作品。任何人都可以想到這種方法的任何嚴重問題?
節約爲何事到數據庫只是一個臨時消息給用戶? –
@ RailsN00b:因爲我想不出更好的辦法!你可以嗎? –