【发布时间】:2021-04-29 17:52:34
【问题描述】:
tldr:由于 firebase RTDB 安全规则仅支持单语句条件且允许的变量非常有限,我无法检查是否允许用户提交。我该怎么办?
我正在制作一个简单的游戏,用户可以在其中进行天气预报(“猜测”)。目前,可以对明天和后天进行猜测(我可能还会添加对接下来几个小时进行短期预测的能力)。下面是我的数据库中的猜测。例如,显示的猜测意味着已提前一天('d1')预测 2021 年 1 月 26 日(30,-20)的龙卷风。长字符串是用户ID。
我想阻止用户发送当天或已经发生的一天的猜测(如果我添加该功能,同样适用于几个小时)。验证已经在客户端实现,但显然我需要检查服务器。
但是,我无法使用 RTDB 安全规则执行此操作,因为唯一的时间变量是 now,即自 Epoch 以来的毫秒数。我能想到的选项是:
- 以某种方式重组数据库,以便我可以使用
now变量进行比较。这可能很复杂/不可能。 - 为可以验证的每个猜测调用 Firebase 云函数。我担心这可能会导致大量函数调用。
有没有“正确”的方法来解决我的问题?有没有我没有想到的选项?一般有什么建议吗?
【问题讨论】:
标签: firebase security firebase-realtime-database firebase-security