gpt4 book ai didi

scala - 如何防范重复请求?

转载 作者:行者123 更新时间:2023-12-01 11:00:07 25 4
gpt4 key购买 nike

我们在网页游戏中有一个按钮供用户收集奖励。应该只点击一次,在收到请求后,我们会将其标记为已收集到数据库中。

我们已经阻止客户端中的按钮重复点击。但是,如果人们在短时间内多次将包裹重新发送到我们的服务器,那将无济于事。

我想要的是一种从服务器端阻止它的方法。

我们在服务器端使用 Playframework 2 (2.0.3-RC2),到目前为止它是无状态的,我很想像这样使用 Set 来保护:

if processingSet has userId then BadRequest
else put userId in processingSet and handle request
after that remove userId from that Set

但我不得不面对像 Updating Scala collections thread-safely 这样的问题一旦我们有多个服务器支持负载平衡,仍然无法阻止用户。

我正在考虑的一种可能性是在DB中有一个表来代替上面的processingSet,但是每个请求会导致1+ DB操作,有没有更好的解决方案~?

谢谢~

最佳答案

在这种情况下,额外的数据库操作是相对“廉价”的解决方案。如果您打算永久保存按钮状态,则应该使用它。

如果按钮仅在一段时间内被禁用(例如直到游戏结束),您还可以考虑使用 cache API但是请记住,它不是专用于应长期存储的解决方案(不应将其视为数据库替代方案)。

关于scala - 如何防范重复请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11864188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com