我有一个 MVC asp.net 测验应用程序。您参加测验的时间是可变的,如果时间用完,答案将自动提交。
目前,我在 Javascript 中设置了计时器,并在 Controller 中保存了时间量 - Session["EndTime"]
。但是,我的理解是,当用 Javascript 实现时,用户可以编辑 Javascript 并更改计时器。如果为真,如何在 Controller 中运行计时器并在计时器用完后发送操作?
最佳答案
服务器无法强制浏览器提交任何内容,这就是 JavaScript 代码要做的事情。而且,是的,用户可以根据需要选择修改它。
服务器要做的是跟踪两件事:
- “测试”实例的唯一标识符
- “测试”开始的日期/时间戳(或者相反,“测试”到期的日期/时间戳,因为任一值都包含相同数量的信息)
第一个值包含在发送到浏览器的表单中,基本上只是一个隐藏的表单字段。当测试结果发布到服务器时,服务器端代码使用标识符来查找持久的日期/时间戳,以将其与当前日期/时间进行比较。如果耗时超过预期,则拒绝测试结果并返回错误。
基本上,服务器端代码不能强制用户提交结果。但它可以拒绝未及时提交的结果。
关于javascript - MVC asp.net 服务器端计时器以防止用户编辑计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998915/