Firebase 安全规则:检查空身份验证
对于每个安全规则,是否需要始终检查身份验证!==无效的对每个孩子都这样做似乎是多余的 我检查了Firebase自己的Firechat安全规则,但执行情况根本不一致。有些规则使用auth.uid,但不检查null auth 如果auth为null,并且在规则中使用auth.uid,会发生什么情况Firebase 安全规则:检查空身份验证,firebase,firebase-security,firebase-realtime-database,Firebase,Firebase Security,Firebase Realtime Database,对于每个安全规则,是否需要始终检查身份验证!==无效的对每个孩子都这样做似乎是多余的 我检查了Firebase自己的Firechat安全规则,但执行情况根本不一致。有些规则使用auth.uid,但不检查null auth 如果auth为null,并且在规则中使用auth.uid,会发生什么情况 关于检查身份验证,推荐的做法是什么!==空?您需要检查auth!==如果要将数据限制为任何经过身份验证的用户,则为null 如果要将数据限制为当前经过身份验证的用户,则需要检查auth.uid==$uid
关于检查身份验证,推荐的做法是什么!==空?您需要检查
auth!==如果要将数据限制为任何经过身份验证的用户,则为null
如果要将数据限制为当前经过身份验证的用户,则需要检查auth.uid==$uid
。您不需要检查auth==null&&auth.uid!=$uid
因为如果auth
变量为空,则auth.uid==$uid
将计算为false。但你仍然可以将两者都包括在内,以便彻底了解
所以本质上,auth!=null
将数据限制为任何经过身份验证的用户,并且auth.uid!=null
仅限于当前经过身份验证的单个用户
现在来了解一些课外信息
使用简化常用规则。
安全规则是灵活的,但它们在复制通用规则方面没有太多的便利。为此,您可以使用
允许您创建类型并将其分配给Firebase数据库中的路径。这些类型充当模式。您还可以创建抽象通用规则的函数
我。它讲述了您需要了解的内容,以便通过Bolt中的类型和函数保护用户数据
isCurrentUser(uid) = auth != null && auth.uid == uid;
isAuthenticated() = auth != null
path /users/$uid {
read() = isAuthenticated() // any authenticated user can read
write() = isCurrentUser($uid);
}
在上面的示例中,我们分别三次重用isCurrentUser()
函数。这将使前进中的变化更容易处理