0

私はJspサーブレットに取り組んでいます。ログイン用に3つのjspページがあります。ログインに成功すると、従業員のレコードが表示され、ログアウトされます。ログアウト後、[戻る]ボタンを押すと従業員のレコードが表示されるため、[戻る]ボタンを無効にしてキャッシュをクリアしました.そしてそれをログインページにリダイレクトします

しかし、今の問題は、ユーザーがログインに成功した後、自分の記録ページにいて、戻るボタンを押すと、ログアウトを押さずにログインページが表示されることです.これの解決策は何ですか?

4

3 に答える 3

1

戻るボタンを無効にすることはできますが、このようにするべきではありません。代わりに、ログアウト後に戻るボタンのキャッシュから読み込まれるページをキャッシュしないようにブラウザに指示する必要があります。サーブレット フィルターは、リクエストの前処理に最適です。フィルターで次のようなことを行うことができます。

response.setHeader("Cache-Control","no-cache");

あなたの場合、Cookie もクリアしている可能性があると思います。これにより、セッションが無効になり、実装したログイン ページにリダイレクトされます。コードを提供していただけると助かります。

于 2012-05-21T06:19:30.370 に答える
0

戻るボタンを押しても、セッションは無効になりません。キャッシュが原因ではありません (従業員ダッシュボードが表示されているページに日付を印刷してみてください。進むボタンを押すたびに、新しい要求がサーバーに送られます)。

追加しました: response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate"); response.setHeader("プラグマ", "キャッシュなし"); response.setDateHeader("有効期限", 0); しかし、それはうまくいきません。

したがって、戻るボタンを無効にするためにJavaスクリプトを追加する必要がある場合があります(クライアントはjsを無効にする可能性があるため、解決策ではありません)。または、別の解決策は、最初のjspに条件を追加することです。つまり、フォームはユーザー名(またはセッションで使用している属性) は null です。

戻るボタンを押した場合、つまりセッションが無効になっていない場合、ユーザー名はまだ存在し、すでにログインしているユーザーを表示して、そこにログアウト ボタンを表示できます。

または、LoginPage jsp で sessionAttribute not null 無効化セッションのセッション パラメータを確認できます。

于 2013-04-30T17:53:03.307 に答える
-1
<script>

$(document).ready(function() {
    function disableBack() { window.history.forward() }

    window.onload = disableBack();
    window.onpageshow = function(evt) { if (evt.persisted) disableBack() }
});
</script>

そのjspページでのみjavaスクリプトを使用して戻るキーを無効にすることができます。

于 2014-09-19T13:06:40.800 に答える