2010-08-17 45 views
0

我正在創建一個基於Web的模擬測試紙,它需要相當安全。Django:管理會話變量來管理瀏覽器返回按鈕

需求是 每個問題只能嘗試和回答一次。 全部都是多個選擇題 一旦回答問題並按下提交,那麼該會話必須到期,並且相同的問題不能通過後退按鈕或其他方式出現。

如果瀏覽器崩潰或系統崩潰,學生必須能夠回到最後一個正在嘗試的問題,但尚未回答和提交。

什麼是在Django中實現它時採用的最佳策略。一旦提交按鈕被按下,你如何自動終止會話?你如何確保按下後退按鈕,你不能訪問試圖回答的問題?

我嘗試了谷歌搜索,但我無法指出可以更好地指導我的資源。我看過django會話文檔,但我不確定我是否知道正確的方法來做到這一點。任何建議可以幫助

回答

3

你如何確保通過按下後退按鈕,你不能訪問嘗試和回答的問題?

Post-Redirect-Get。 http://en.wikipedia.org/wiki/Post/Redirect/Get

一旦按下提交按鈕,您將如何自動終止會話?

確實沒有意義。你不需要'殺死'會話。你需要做兩件事。

  1. 更新此用戶的數據庫條目以指示他們已經獲得了多少。

  2. 更新會話以指示他們已經獲得了多少。

不要試圖「殺死」會話。保持會話信息(和底層數據庫)正確。

殺死會話將只會強制他們再次登錄 - 這只是令人討厭的。此外,當他們再次登錄時,數據庫必須是是正確的,否則他們將再次開始測試。所以,你只需要保持數據庫和會話同步。