2012-07-01 9 views
27

私は自分のWebアプリケーションで設定しました。私は次のワークフローに問題があります:ログアウト後、私は戻るボタンを押すとログインが必要な最後のページを見ることができます

私はログインする必要があります。その後、私は通常私のWebアプリケーションの管理パネルに移動します。ログアウトをクリックすると、ルートページにリダイレクトされます。これは、これまでの動作です。

このページで上記の操作を行った後、ブラウザの戻るボタンをクリックすると奇妙なことが起きます。このボタンは、キャッシュされた最後のページを表示しています。私がリフレッシュをクリックすると私がリダイレクトされ、ページにアクセスするためにログインするように言われていますが、私はブラウザの最後の履歴ページを見ることができないため、私のセッションは破壊されました。

これはどのように可能なのですか?それを防ぐにはどうすればよいですか?それはブラウザのキャッシュの権利と関係がありますか?これを修正する唯一の方法は、この動作を防ぐためにログインしたページからキャッシングを削除することです。どうやってやるの?

+0

SSLに切り替えることはできますか? –

+1

[1] [1]と[2] [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の答えを参照してください。

関連する問題