javascript - MVC asp.net 服务器端计时器以防止用户编辑计时器

标签 javascript c# asp.net asp.net-mvc timer

我有一个 MVC asp.net 测验应用程序。您参加测验的时间是可变的,如果时间用完,答案将自动提交。

目前,我在 Javascript 中设置了计时器,并在 Controller 中保存了时间量 - Session["EndTime"]。但是,我的理解是,当用 Javascript 实现时,用户可以编辑 Javascript 并更改计时器。如果为真,如何在 Controller 中运行计时器并在计时器用完后发送操作?

最佳答案

服务器无法强制浏览器提交任何内容,这就是 JavaScript 代码要做的事情。而且,是的,用户可以根据需要选择修改它。

服务器要做的是跟踪两件事:

  • “测试”实例的唯一标识符
  • “测试”开始的日期/时间戳(或者相反,“测试”到期的日期/时间戳,因为任一值都包含相同数量的信息)

第一个值包含在发送到浏览器的表单中,基本上只是一个隐藏的表单字段。当测试结果发布到服务器时,服务器端代码使用标识符来查找持久的日期/时间戳,以将其与当前日期/时间进行比较。如果耗时超过预期,则拒绝测试结果并返回错误。

基本上,服务器端代码不能强制用户提交结果。但它可以拒绝未及时提交的结果。

关于javascript - MVC asp.net 服务器端计时器以防止用户编辑计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998915/

相关文章:

javascript - 如何仅在第一个结束时才开始新的 velocity.js 效果?

javascript - 使用 chrome devTools 和 inspector api 嵌入 V8 引擎调试

c# - 使用 "is object"而不是 "!= null"或 Object.ReferenceEquals()

asp.net - 在某些情况下.NET找不到我在经典asp中创建的cookie

javascript - 尽管我一遍又一遍地使用相同的格式,但我得到输入字符串的格式不正确

javascript - Gulp 获取目录的 ls

javascript - 如何将文件内容转换成字符串?

c# - 经验丰富的 C++ 程序员在 C# 开发中最常见或最严重的错误

c# - 如何为 Like 创建 System.Linq.Expressions.Expression?

asp.net - 客户端可以被视为一个线程吗?