如何在社交媒体应用中阻止 Firebase 上的用户?适用于 iOS

Edi*_*osa 2 firebase firebase-security swift

在此处输入图像描述我对我的应用程序使用了大约 90%,并且准备发布它以便可以发布它以进行测试。

我被苹果拒绝了,因为我没有一个非常重要的功能: - 用户阻止滥用用户的机制。

我已经有了一个可以关注其他用户的功​​能,但是我一直在思考如何阻止访问,这样当一个用户阻止另一个用户时,他们就看不到与刚刚阻止他的人相关的任何内容。他们无法在搜索、新消息和帖子中看到他们的个人资料。

我不知道从哪里开始。如果您曾开发过用户内容生成的应用程序。我什至不知道从哪里开始。我已经坚持了 3 周,现在我很绝望。

//我将如何实现这样的东西?

我的安全规则是基本的。

{
  "rules": {
".read": "auth != null",
".write": "auth != null"
Run Code Online (Sandbox Code Playgroud)

} }

到目前为止,我显示信息的方式是,用户只需使用电子邮件、用户名和密码登录,然后创建'和允许他们登录应用程序并查看与应用程序相关的所有内容的用户.

我的节点也是

Messages
Run Code Online (Sandbox Code Playgroud)

评论 标记帖子 喜欢帖子 用户消息 用户

Jen*_*son 6

这个问题有很多解决方案。一种方法是在数据库中为被阻止的用户设置一个单独的节点。在每个用户下,您可以列出uid被阻止用户的值,值为“true”。值是什么并不重要——这只是让搜索被阻止的人更容易。因此,例如,假设这是您的数据库结构:

users:
    uid1:
       my data: {
           // some stuff here
       }
    uid2:
       my data: {
           // some stuff here
       }
blocked:
     uid1:
         uid8: true,
         uid3: true
     uid2:
         uid1: true
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,uid1已经阻塞了uid8uid3,等等。然后,您可以调整规则以验证用户是否可以读取他们是否通过身份验证并且uid在该用户的阻止列表中找不到他们。

{
  "rules": {
    "users": {
      "$user_id": {
        // only messages from the last ten minutes can be read
        ".read": "auth != null && !root.child('blocked/'+$user_id+'/'+auth.uid+'/true').exists()",
        ".write": "$user_id === auth.uid"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

查看有关安全规则的文档,了解一些安全规则示例。