Firestore安全规则:未定义的对象属性重要吗?

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

我想知道关于具有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

下面是模拟器返回的注释屏幕截图。我的理解是,对于安全性,不需要检查未定义的属性。我的问题是标准是什么,如果不检查未定义的属性就是标准,那为什么模拟器会引发错误?

enter image description here

附带说明,以下哪一项(隐式或显式布尔条件)是首选,为什么:

allow read: if request.auth.token.claims.admin;

allow read: if request.auth.token.claims.admin == true;

firebase google-cloud-firestore firebase-security-rules
1个回答
0
投票

首先:规则评估中的所有错误都会导致错误。没有任何条件的错误会导致拒绝访问。因此,如果您尝试访问null或未定义对象的属性,那将是一个错误(因为该属性不存在),并导致立即拒绝访问。

如果您想在规则中显式检查null,那很好。这可能有助于提高这些规则的可读性。但是由于立即拒绝访问,您没有义务这样做。这完全取决于您。

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