2014-01-09 40 views
0

當用戶登錄到系統,它是在https閃光燈[:通知]當從http redirect_to的變化HTTPS,反之亦然

接下來到了主頁,這是http

不工作

在登錄過程中,根據特定條件,我們會向用戶發送一些消息flash[:notice]

flash[:notice]不起作用。

ssl未實現時,flash [:notice]工作正常。

redirectionhttphttp頁面也flash[:notice]完美。

我們還實施了

flash.keep

redirect_to path_to_path, :flash=>{:notice=>"our message"} 

但他們都失敗了。

如果有人遇到這種情況,請提出建議。

+1

這可能是因爲您登錄後有兩個重定向。第一個將用戶重定向到主頁,第二個將協議從https更改爲http。您的SSL安全性如何在應用程序中實現? –

+0

@MarekLipka是的,有兩個重定向。在第一次重定向時,我們正在創建Flash消息。在第二個重定向協議被改變。隨着協議改變。我們已經使用'bartt-ssl-requirements'實現了SSL安全性gem –

+0

@MarekLipka您的建議對我有很大的幫助。我在重定向中使用了flash.keep。現在它工作完美。謝謝 –

回答

0

在我們的應用中,有兩個重定向。

在登錄後的第一重定向,我們去的主頁,我們正在創建的提示信息。

在第二重定向協議更改爲主頁。

我在重定向中都使用了flash.keep

現在全部flash[:notice]完美運作。

2

flash消息是使用服務器會話實現的。但是,根據服務器和配置,會話不會在http和https會話之間共享。換句話說,如果您從http切換到https或反之,服務器將創建兩個不同的用戶會話。

您可以通過打印出會話ID並比較它是否相同來進行檢查。

您可以通過在代表消息的查詢字符串中傳遞參數(例如redirect_to path_to_path(message: 1),然後在操作檢查中,如果param存在,在視圖中打印出消息(將會在視圖編碼)。

+0

我們正在像這樣'redirect_to「/#{@ sgnpost.alias_post_id}?display = true」'重定向。路徑是動態生成的。我們不能使用'(消息:'我們的消息')'。所以我們也嘗試使用'redirect_to「/#{@sgnpost.alias_post_id}?display=true」,:flash => {:notice =>「歡迎來到...」}'。但這也沒有奏效。 –

+0

仔細閱讀我的答案。我建議不要在重定向時設置Flash,只需傳遞查詢即可。然後在模板顯示中寫入HTML來顯示消息,並且只有在使用'params [:message] ==「1」' –

+0

好了,我明白了。我正在實施它。如果成功,我會讓你知道的。 –

相關問題