Zac*_*Zac 10 firebase firebase-security firebase-realtime-database
我想要一个安全规则,允许任何人获取用户列表并阅读他们的名字,但只允许登录用户查看他们自己的电子邮件.
这是一个示例数据结构:
"User" : {
"abc123" : {
"name" : "Bob",
"email" : "bob@hotmail.com"
}
}
Run Code Online (Sandbox Code Playgroud)
安全规则的简单方法可能是执行以下操作:
"User" : {
"$user" : {
"name" : {
".read" : true
},
"email" : {
".read” : "auth.uid === $user"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,由于用户级别没有读取规则,因此将拒绝读取列表的请求.但是,在用户级别添加读取规则将覆盖电子邮件规则,并使每个子节点都可读(请参阅Firebase安全指南中的规则级联).
安全指南确实指出规则不是过滤器,但没有提供关于如何处理它的很多指导.
我应该将我的用户实体拆分为PrivateUser和PublicUser吗?
让任何人都能获得用户列表并读取他们的名字。并允许登录用户查看自己的电子邮件。
扎克说:首先考虑访问,然后对完全公开或完全私有的对象进行建模。
类型1:
{"rules":{
"user_publicly":{"$user:{
".read":true,
"name":{}
}},
"user_privately":{"$user:{
".read":"auth != null && $user == auth.uid",
"email":{}
}}
}}
Run Code Online (Sandbox Code Playgroud)
类型2:
{"rules":{
"user":{"$user:{
"public":{
".read":true,
"name":{}
},
"private":{
".read":"auth != null && $user == auth.uid",
"email":{}
}
}}
}}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1032 次 |
最近记录: |