当前位置:  开发笔记 > 程序员 > 正文

安全规则:检查空身份验证

如何解决《安全规则:检查空身份验证》经验,为你挑选了1个好方法。

对于每个安全规则,是否有必要始终检查auth!== null?为每个儿童规则做这件事似乎是多余的.

我检查了Firebase自己的Firechat安全规则,执行情况根本不一致.有些规则使用auth.uid但不检查null auth.

如果auth为null并且规则中使用了auth.uid会发生什么?

关于检查auth的推荐做法是什么!== null?



1> David East..:

您需要检查auth !== null是否要将数据限制为任何经过身份验证的用户.

您需要检查auth.uid == $uid何时将数据限制为当前经过身份验证的用户.您不需要检查auth == null && auth.uid != $uid因为auth.uid == $uid如果auth变量为null 将评估为false .但你仍然可以将两者都包括在内.

因此,实质上auth != null是将数据限制为任何经过身份验证的用户,并auth.uid != null限制为当前经过身份验证的单个用户.

现在提供一些额外的课程信息.

使用Bolt编译器简化通用规则.

安全规则是灵活的,但它们对于复制通用规则没有太多便利.为此,您可以使用Bolt编译器.

Bolt编译器允许您创建类型并将它们分配给Firebase数据库中的路径.这些类型充当架构.您还可以创建抽象通用规则的函数.

我写了一篇关于用Bolt保护用户数据的博文.它通过您需要知道的内容来保证用户数据在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()三次函数.这将使更改前进更容易处理.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有