应该对存储和数据库使用什么规则,以便身份验证用户可以读写数据库?

时间:2018-11-07 04:21:27

标签: ios swift firebase firebase-realtime-database firebase-authentication

应该对存储和数据库使用哪些规则,以便身份验证用户可以读写数据库? 但是,Auth用户只能更改信息,例如帖子的点赞数量,而不能更改其他帐户的用户名。简单地说,规则应该与instagram相似。如何存档?

这不合适,因为它允许用户在任何地方阅读和书写(我相信这是正确的,请告诉我是否正确)

// These rules require authentication
// {
//   "rules": {
//     ".read": "auth != null",
//     ".write": "auth != null"
//   }
// }

当然,还有其他所有内容都可以在Firebases文档中找到。

1 个答案:

答案 0 :(得分:0)

以上安全规则是仅允许经过身份验证的用户读取和写入数据库的规则。但是可以,只要经过身份验证,他们就可以在数据库中的任何位置进行写。

下面的这个,仅允许用户访问自己的数据。

{
  "rules": {
    "posts": {
       "$uid": {
         ".read": "$uid === auth.uid",
         ".write": "$uid === auth.uid"
       }
     }
   }
}

您还可以在此GitHub repository of mine上找到并了解更多规则。

也用于Firebase存储:

service firebase.storage {
  match /b/{bucket}/o {
    match /images {
      // anyone can view any image (no auth, publicly readable)
      match /{allImages=**} {
        allow read;
      }

      // only authenticated users can write to "public" images
      match /public/{imageId} {
        allow write: if request.auth != null;
      }

      // only an individual user can write to "their" images
      match /{userId}/{imageId} {
        allow write: if request.auth.uid == userId;
      }

      // allow a "group" of users to read/write to shared images
      // an owner metadata property on the object contains the groupId for reads
      // a custom token has been minted with a groupId property for writes
      match /{groupId}/{imageId} {
        allow read: if resource.metadata.owner == request.auth.token.groupId;
        allow write: if request.auth.token.groupId == groupId;
      }
    }
  }
}

详细了解Firebase storage security.