首页 文章

使用未存储在数据中的Firebase安全规则中的字段

提问于
浏览
1

我们正在使用Firebase自定义身份验证,并希望根据“auth”有效负载数据定义读/写访问规则 . 但是,出于安全原因,我们不希望将auth.uid的值存储在Firebase数据中的任何位置 . 也就是说,因为例如用户id不是数据的一部分,所以我不能使用规则:auth.uid == newData.child(“userId”) . val()

有没有办法只将数据传递给Firebase,以便检查安全规则,但实际上并没有将数据保存在Firebase数据库中?

1 回答

  • 1

    安全规则有三种可能的数据源:硬编码字符串,数据库数据或身份验证令牌(即 auth ) .

    您可以generate your own authentication tokens,允许您指定任何您想要的信息,而无需将其存储在Firebase中 . 注意,安全令牌的内容不能由用户伪造,但是用户可以读取它们;如果你的目标是存储一些用户不应该知道的秘密信息,那么这不是一个选择 .

    请注意,您可以保护数据库中的任何路径,使其无法读取,将数据存储在其中,并且安全规则仍可以引用该数据 . 请记住security rules cascade,因此您希望此数据在其自己的路径中没有可读的父项 .

    您的评论中提到的安全令牌听起来完全没有用户的身份验证令牌 . 如果他们已经过身份验证,那么您已经验证了他们的uid,因此不清楚为什么安全令牌会添加任何其他值 .

相关问题