【发布时间】:2019-10-01 11:16:40
【问题描述】:
我想知道关于具有 Firestore 安全规则的未定义属性的约定是什么。
例如在以下检查自定义声明的规则中:
allow read: if request.auth.token.claims.admin;
未定义属性错误有很多点,到目前为止,最有可能的是如果用户未通过身份验证,则request.auth 将未定义,因此request.auth.token.claims.admin 将尝试访问未定义值的属性。
我注意到在文档中request.auth.uid 是一个常见的检查,他们不检查是否首先定义了request.auth。但是,在我的研究中,我注意到有些人确实会检查类似的查询,例如 in this stack overflow answer。
下面是模拟器返回的带注释的屏幕截图。我的理解是,这种对未定义属性的检查对于安全性来说不是必需的。我的问题是标准是什么,如果不检查未定义的属性是标准,那么为什么模拟器会抛出错误?
附带说明以下哪个(隐式或显式布尔条件)是首选以及原因:
allow read: if request.auth.token.claims.admin;
allow read: if request.auth.token.claims.admin == true;
【问题讨论】:
标签: firebase google-cloud-firestore firebase-security