2012-07-01 18 views
27

我的設計配置在我的web應用程序中。我有以下工作流程的問題:註銷後,如果我推回按鈕,我可以看到需要登錄的最後一頁

對於訪問管理面板我需要登錄。之後,我通常會導航到我的網絡應用的管理面板。當我點擊註銷時,它會將我重定向到根頁面,這是我到目前爲止所需要的行爲。

奇怪的事情開始時,在這個頁面和上述行動後,我點擊瀏覽器的後退按鈕,這是顯示我緩存的最後一頁我是。我的會話已被破壞,因爲如果我點擊刷新,它會重定向我,它會提及登錄以訪問該頁面,但我不希望能夠看到瀏覽器的最後一個歷史記錄頁面。

這怎麼可能,我該怎麼做才能防止它?它與瀏覽器緩存有關嗎?解決這個問題的唯一方法是從登錄頁面中刪除緩存以防止這種行爲?我怎樣才能做到這一點?

+0

你可以切換到SSL嗎? –

+1

您可以檢查這兩個鏈接:[1] [1]和[2] [2]。 [1]:http://stackoverflow.com/questions/4120289/how-to-clear-browser-cache-after-user-logout-to-prevent-access-to-private-info- v [2]:http://stackoverflow.com/questions/711418/how-to-prevent-browser-page-caching-in-rails – tiktak

回答

53

你要設置你的頁面的標題以防止緩存。你可以這樣做:

before_filter :set_cache_buster 

    def set_cache_buster 
    response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate" 
    response.headers["Pragma"] = "no-cache" 
    response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT" 
    end 

信貸去this thread的第一個響應。

+0

你好,女巫控制器? – Zakos

+0

在ApplicationController中 – inquisitive

+4

如果我只想在註銷後不使用緩存,會發生什麼情況?我認爲這會在每次請求後刪除緩存。什麼是資產,它會被刪除? – fabricioflores

5

你可以嘗試告訴瀏覽器不要緩存東西,但這就是它 - 嘗試。

如果他們以前瀏覽過網頁,那麼您可以做的事情很少,以致無法再次看到網頁 - 這一點在您的控制之下。

例如,可以下載頁面的HTML(這是他們在瀏覽頁面時所做的),而且您也無法阻止他們說出截圖。

這表示瀏覽器緩存將在一些(大多數?)情況下工作,請參閱Michael Frederick的答案。

相關問題