2012-05-05 12 views
0

웹 응용 프로그램을 만들고 tomcat7에 배포했습니다. 이 응용 프로그램은 다음과 같은 방식으로 작동합니다. 사용자가 적절한 인증을 통해 로그인 한 다음 사용자가 답변을 선택하고 테스트를 제출하는 테스트 페이지 (html)가 표시됩니다. 다른 서블릿을 제출 한 후 사용자에게 점수가 표시되는 곳을 호출합니다.서블릿에서 뒤로 버튼을 비활성화하는 방법은 무엇입니까?

여기에서 문제는 사용자가 브라우저 뒤로 버튼으로 돌아가서 시험을 다시 제출하면 점수가 변경된 것입니다.이 문제를 방지하려면 어떻게해야합니까?

답변

1

폼이 생성 될 때 토큰을 생성하고 사용자 세션 및 양식의 숨겨진 필드에 저장하는 일반적인 트릭 (일부 프레임 워크에서 제공하는)이 있습니다. 양식이 제출되면 세션의 토큰과받은 토큰을 비교합니다. 일치하는 경우 세션에서 토큰을 삭제하고 양식 제출을 진행합니다.

사용자가 양식을 다시 제출하면 세션에 더 이상 토큰이 없으므로 양식 제출을 처리하는 대신 오류 메시지가 표시됩니다.

또 다른 방법은 제출이 멱등 (adempotent)이되도록 양식 처리를 코딩하는 것입니다. 예를 들어 맹목적으로 점수를 높이는 대신 사용자가 질문에 대한 답변을 이미 받았는지 확인하고 두 번째 답변을 무시할 수 있습니다.

관련 문제