使用JSON提供测验的简洁方法

问题描述 投票:0回答:2

这更多是关于代码组织和更流畅的方法,可以推广。特别是它在Jeopardy测验中,我正在构建以提高我的AJAX / JSON技能。我想将答案与问题区别开来。人们可以在DevTools中找到并打开JSON并找到正确的答案。我想让它变得更难,但不是太难以编码或添加任何更多层超过一个或两个JSON文件。 (并且不像是一个数据库查询,因为它只是一个宠物项目。

不确定怎么做...这是我的JSON .. {“问题”:“杰斐逊建造蒙蒂塞洛的城镇”,“选择”:[“里士满”,“拉利”,“夏洛茨维尔”]}

我对JSON中的问题得到了正确的答案,但我不确定这是做到这一点的最好方法......我认为anwser密钥可能会更好。

javascript json ajax architecture client-side
2个回答
1
投票

你可以做到这一点(并保持简单)的一种方法是对你的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。 dataquestions的变量会受到严重影响,识别正在解码的内容会更难。


0
投票

我创建一个端点,获取问题ID和所选答案,返回它是否正确和正确答案,如果它是错误的,将该问题标记为该过程中该用户/会话的答案。

这样,即使用户使用DevTools或类似的东西命中您的API,效果也会与通过UI回答相同。

© www.soinside.com 2019 - 2024. All rights reserved.