使用JSON提供测验的简洁方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用JSON提供测验的简洁方法相关的知识,希望对你有一定的参考价值。
这更多是关于代码组织和更流畅的方法,可以推广。特别是它在Jeopardy测验中,我正在构建以提高我的AJAX / JSON技能。我想将答案与问题区别开来。人们可以在DevTools中找到并打开JSON并找到正确的答案。我想让它变得更难,但不是太难以编码或添加任何更多层超过一个或两个JSON文件。 (并且不像是一个数据库查询,因为它只是一个宠物项目。
不确定怎么做...这是我的JSON .. {“问题”:“杰斐逊建造蒙蒂塞洛的城镇”,“选择”:[“里士满”,“拉利”,“夏洛茨维尔”]}
我对JSON中的问题得到了正确的答案,但我不确定这是做到这一点的最好方法......我认为anwser密钥可能会更好。
你可以做到这一点(并保持简单)的一种方法是对你的JSON对象进行base64编码。
首先,一旦您有了所有问题,请将它们编码为base64。您可以在javascript中使用btoa
函数来执行此操作。不要把这行代码放在你的客户端。
btoa( JSON.stringify({ "question": "Town where Jefferson built Monticello", "choices": [ "Richmond", "Raliegh", "Charlottesville" ] }))
然后,将该base64编码的字符串放在代码中。
const data = "eyJxdWVzdGlvbiI6IlRvd24gd2hlcmUgSmVmZmVyc29uIGJ1aWx0IE1vbnRpY2VsbG8iLCJjaG9pY2VzIjpbIlJpY2htb25kIiwiUmFsaWVnaCIsIkNoYXJsb3R0ZXN2aWxsZSJdfQ=="
从那里,您可以解码并将其转换回代码中的JSON对象。
let questions = JSON.parse( atob(data) )
就像你在问题中提到的那样,这仍然可以被“黑客攻击”。无论如何都不是安全。人们可以检查它并运行代码来获取问题和答案。但是,乍一看答案并不明显。
为了使它更好一些,您可以通过混淆工具运行JavaScript。 data
和questions
的变量会受到严重影响,识别正在解码的内容会更难。
我创建一个端点,获取问题ID和所选答案,返回它是否正确和正确答案,如果它是错误的,将该问题标记为该过程中该用户/会话的答案。
这样,即使用户使用DevTools或类似的东西命中您的API,效果也会与通过UI回答相同。
以上是关于使用JSON提供测验的简洁方法的主要内容,如果未能解决你的问题,请参考以下文章