我有一个关于云火库安全规则逻辑如何工作的问题:
假设我有这样的规则:
allow read: if (auth.token.user === true && request.query.limit < 100 && uidInDocument()) || auth.token.admin === true && get(/databases/$(database)/documents/users/$(request.auth.uid)).data.name == "foo";
现在,我的问题是,如果 or 语句的第一部分为真,这是否意味着第二部分不执行?我正在考虑这一点,因为我不想引起读取,除非有必要这样做,在这种情况下,如果用户是admin
提前谢谢。
安全规则中的布尔表达式像几乎所有其他编程语言一样计算从左到右和短路。 如果您有一系列逻辑 AND 操作,并且第一个操作为 false,则整个规则完成,访问将被拒绝。
有关详细信息,请阅读文档。