2011-12-20 31 views
4

「ログインしていません」というメッセージが表示されます。自分のページで「送信」ボタンをクリックしたゲストです。確かに、ログインしたユーザーのために私はではなく、にメッセージを表示します。私はこのようにこれをコード化しました:ログアウト後に「戻る」ボタンをクリックしたユーザーを扱う方法

<c:if test="${someCondition}"> 
addMsgToButtonEvent(); 
</c:if> 

これは(ほとんど)完璧です。しかし、今、ユーザーがログインしているときと:

  1. クリックはブラウザ

をクリックし、「戻る」ボタン

  • (私のヘッダ内にあり、別のページにリダイレクトする)メッセージをサインアウト私のページが再びレンダリングされないために表示されない、addMsgToButtonEventは呼び出されません。私は歴史をクリアすることで "戻る"ボタンをブロックすることができることを知っています - しかし、これはビジネス要件にあまり変化します。これはいくつかのソフトで効果的な回避策ですか?編集


    を私はこのような問題のための最善のアプローチは、符号アウト後にセッションを無効にされると思います。私はこのようにしました。

    +0

    が重複する可能性を深く掘ることができますログアウト後](http://stackoverflow.com/questions/419) 4207 /防止 - ユーザから戻る - ログアウト後のページ - ログアウト後のページ) – BalusC

    答えて

    3

    ASP.Netサイトとログインコントロールで同様の問題が発生しました。

    あなたはそれをキャッシュしないようにブラウザに指示するHTMLにメタタグを追加することができます - ので、戻るボタンはページが正しく、サーバーから再ロードされるようになります:

    <meta http-equiv="CACHE-CONTROL" content="NO-CACHE"> 
    <meta http-equiv="EXPIRES" content="0"> 
    

    希望に役立つかもしれません。 )

    +2

    同じ名前のHTTP応答ヘッダーがすでに存在する場合、これは機能しません。キャッシュコントロールの値も不完全で、ほとんどのブラウザ(非MSIEブラウザ)で期待どおりに動作しません。 http://stackoverflow.com/questions/49547/making-sure-a-web-page-is-not-cached-across-all-browsers/2068407#2068407 – BalusC

    +1

    @BalusC私はあなたの優れた知識に敬意を表します。件名: –

    0

    キャッシングが問題である場合は、その問題が解決しない場合は、あなたのJSP

    <% 
    response.setHeader("Cache-Control","no-cache no-store"); //HTTP 1.1 
    response.setHeader("Pragma","no-cache"); //HTTP 1.0 
    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server 
    %> 
    

    の先頭に次の行を追加します...あなたが手であるかを見てみたいことがあり表示のコードとセッションの無効化。

    最善のアプローチは、次のとおりです。

    セッションを作成すると声明を印刷するために名前の属性 を割り当てるという名前の属性が見つかった場合は名前の属性 の有無を確認...他のメッセージを表示しません...ログアウト時に にそれを行うsession.invalid行う()

    は私が働いていたものを知ってみましょう...そして、我々は戻って、以前の保護されたページに行くから[防ぎ、ユーザーのこの

    +0

    キャッシュ制御属性が不完全です。それに沿って 'must-revalidate'が必要です。 http://stackoverflow.com/questions/49547/making-sure-a-web-page-is-not-cached-across-all-browsers/2068407#2068407も参照してください。 – BalusC

    関連する問題