是否有针对firebase应用程序中受保护内容的适当授权规则的最佳实践方法
到目前为止我的一些研究:
方法1:秘密URL
我需要知道能够查看/编辑文档的URL
不是真正的授权,因为任何有权访问该URL的登录用户都可以编辑/修改它.
无法索引我有权访问的所有文档
方法2:使用firebase授权规则将用户添加到文档,并在读/写之前检查用户是否为document.users.
{
"documents": {
"$documents_id": {
// any friend can read my post
".read": "auth.id === data.child('owner').val() || root.child('users/'+data.child.owner.val()+'/users/'+auth.id).exists()",
// any friend can edit my post
".write": "auth.id === data.child('owner').val() || root.child('users/'+data.child.owner.val()+'/users/'+auth.id).exists()"
},
users:{
// List of user.ids that have access to this document
}
}
}
Run Code Online (Sandbox Code Playgroud)
优点:
缺点:
方法3: Firebase授权规则(方法2),以及每个用户都可以访问的document_ids数组的冗余用户存储.此用户存储仅用于查询用户有权访问的所有文档.即:
{
"documents": {
"$documents_id": {
// any friend can read my post
".read": "auth.id === …Run Code Online (Sandbox Code Playgroud)