我们正在使用Firebase自定义身份验证,并希望根据“auth”有效负载数据定义读/写访问规则。但是,出于安全原因,我们不希望将auth.uid的值存储在Firebase数据中的任何位置。也就是说,由于用户id不是数据的一部分,我不能使用规则: auth.uid == newData.child(“userId”)。val()
有没有办法只将数据传递到Firebase以检查安全规则,但实际上是不是将数据保存在Firebase数据库中?
答案 0 :(得分:1)
安全规则有三种可能的数据来源:硬编码字符串,数据库数据或身份验证令牌(即auth
)。
您可以generate your own authentication tokens,允许您指定所需的任何信息,而无需将其存储在Firebase中。请注意,安全令牌的内容不能由用户伪造,但用户可以读取;如果您的目标是存储一些用户不应该知道的秘密信息,那么这不是一个选项。
请注意,您可以保护数据库中的任何路径,使其无法读取,将数据存储在其中,安全规则仍可以引用该数据。请记住security rules cascade,因此您希望此数据在其自己的路径中没有可读的父级。
评论中提到的安全令牌听起来完全没有用户的身份验证令牌。如果他们已经过身份验证,那么您已经验证了他们的uid,因此不清楚为什么安全令牌会添加任何其他值。