Django:管理会话变量以管理浏览器后退按钮

时间:2010-08-17 19:20:29

标签: python django session django-sessions

我正在创建一个基于网络的模拟试卷,需要相当安全。

需求是 每个问题都可以尝试和回答一次。 所有都是多个选择题 一旦问题得到解答并按下提交,那么该会话必须到期,并且不能通过后退按钮或其他方式显示相同的问题。

如果浏览器崩溃或系统崩溃,学生必须能够回到最后一个正在尝试的问题,但尚未回答并提交。

在Django中实现它时采用的最佳策略是什么?按下提交按钮后,如何自动终止会话?如何确保通过按后退按钮,您无法访问尝试和回答的问题?

我尝试使用谷歌搜索,但我无法指出能够更好地指导我的资源。我见过django会话文档,但我不确定我是否知道正确的方法。任何建议都可以提供帮助

1 个答案:

答案 0 :(得分:3)

  

您如何确保通过按后退按钮,您无法访问尝试和回答的问题?

后重定向-获取。 http://en.wikipedia.org/wiki/Post/Redirect/Get

  

按下提交按钮后,如何自动终止会话?

没有意义。您不需要“杀死”会话。你需要做两件事。

  1. 更新此用户的数据库条目,以指明他们已经走了多远。

  2. 更新会话以表明他们已经走了多远。

  3. 不要试图“杀死”会话。保持会话信息(和底层数据库)正确。

    杀死会话只会迫使他们再次登录 - 这只是令人讨厌。此外,当他们再次登录时,数据库必须正确或者他们将再次开始测试。因此,您只需要保持数据库和会话同步。