很快,我就想了解一下Firebase安全协议,我已经建立了一个名为UsersDB的数据库,它将存储基于auth.uid的详细信息。详细信息是全名,电子邮件,提供商,帐户创建日期,最后登录日期。
我已经设置了如下规则:
{
"rules": {
".read": "auth != null", // only authed users can read/write
".write": "auth != null",
"UsersDB": {
"$uid": {
".read": "auth.uid == $uid", // users can read/write their own data
".write": "auth.uid == $uid"
}
}
}我的理解是,记录只能由user_id与auth.uid匹配的人读写。
我的问题是,我是否正确地做到了这一点,如果不是,我应该如何做到这一点?我只希望创建帐户的人能够读和写到这个,而没有其他的uid来访问信息。
最后,作为firebase帐户的管理员。我会考虑继续创建一个管理控制台类型的软件,这将允许我访问所有存储的数据。我将如何更改或更新规则,以允许管理员登录访问上述数据。我会更改对任何人的读访问权限(尽管在我看来,这会在规则中留下一个漏洞),还是有一种方法来声明一条规则,允许我(管理员)对所有数据进行完全读取访问?
谢谢
发布于 2016-03-29 13:18:26
您正在忽略Firebase文档中指定权限级联的一个非常重要的部分
安全和消防规则自上而下地工作。 子规则只能授予父节点已经声明的附加权限。它们不能取消读或写特权。
由于顶级读和写规则已经允许任何经过身份验证的用户读取/写入所有帐户,所以不能在树中较低的位置取消该权限。
幸运的是,在您的场景中不需要授予这些更高级别的权限。
{
"rules": {
"UsersDB": {
"$uid": {
".read": "auth.uid == $uid",
".write": "auth.uid == $uid"
}
}
}
}这样,每个用户都只能读写自己的数据。
请记住,Firebase 规则不是过滤器。有了上面的结构,任何用户都不能在/UsersDB上查询,因为没有人在那里读取权限。
https://stackoverflow.com/questions/36283553
复制相似问题