2012-05-05 7 views
0

私はWebアプリケーションを作成し、tomcat7にデプロイしました。このアプリは次のように動作します。 ユーザーが適切な認証を行った後、ユーザーが回答を選択してテストを送信するテストページ(html)が表示されます。別のサーブレットを送信した後、ユーザーにスコアが表示されます。サーブレットの戻るボタンを無効にするにはどうすればいいですか?

ここで問題となるのは、ユーザーが(ブラウザの戻るボタンを使用して)戻ってテストを再送信すると、スコアが変更された後です。これを防ぐにはどうすればよいですか?

答えて

1

フォームが生成されるときにトークンを生成し、ユーザーのセッションとフォームの隠しフィールドに格納する通常の方法(フレームワークによって提供される)があります。フォームが送信されると、受け取ったトークンとセッションのトークンを比較します。一致する場合は、セッションからトークンを削除し、フォームの送信を続行します。

ユーザーがフォームを再送信してもセッションにトークンがなくなり、フォーム送信を処理する代わりにエラーメッセージが表示されます。

もう1つの方法は、送信が冪等でなければならないようにフォーム処理をコーディングすることです。たとえば、盲目的にスコアを上げる代わりに、質問がユーザーによってすでに応答されているかどうかを確認し、2番目の回答を無視することができます。

関連する問題