Firebase设计/安全性,适用于以下对象:;“团体”;条目

Firebase设计/安全性,适用于以下对象:;“团体”;条目,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我正在寻找人们的意见/专业知识(过去的经验),了解如何为我的Firebase JSON树构建“组”之类的设计/安全性 我看到/听到了两种可能的结构: Groups ---- GroupID (provided by firebase) ---- GroupPW (provided by user that create new group) ---- GroupName (provided by user that create new group)

我正在寻找人们的意见/专业知识(过去的经验),了解如何为我的Firebase JSON树构建“组”之类的设计/安全性

我看到/听到了两种可能的结构:

Groups
 ---- GroupID (provided by firebase)
       ---- GroupPW (provided by user that create new group)
             ---- GroupName (provided by user that create new group)
             ---- etc....
此处,组密码直接位于组id下,因此用户需要输入groupID和groupPW才能加入组。但通过这样做,他们的组密码永远无法更改,因为您无法在Firebase中更改/重命名密钥

以这种方式构建数据:

Groups
 ---- GroupID 
       ---- GroupPW (provided by user that create new group)
       ---- GroupName (provided by user that create new group)
       ---- etc....
此处,GroupPW已移动到GroupID(组的一个属性)下,但这会将密码暴露给获得结构访问权限的任何人


是否有人实施了不同的结构,或者他们是否成功地利用了上述结构之一

我知道你可以这样做

因此,您将在创建组的用户下保存密码

这些规则只允许所有者访问密码


让我们看看这个结构

users
  user_0
   name: "Larry"
  user_1
   name: "Mo"
  user_2
   name: "Curly"
  user_3
   name: "Ponch"
  user_4
   name: "John"
groups
  group_0
    name: "Stooges"
    owner: user_0
    user_1: true
    user_2: true
  group_1
    name: "Chips"
    owner: "user_3"
    user_4: true
假设Larry(用户_0)创建了一个组并添加了用户_1和用户_2。然后Ponch(用户_3)创建了一个组并添加了用户_4。这是结构图

users
  user_0
   name: "Larry"
  user_1
   name: "Mo"
  user_2
   name: "Curly"
  user_3
   name: "Ponch"
  user_4
   name: "John"
groups
  group_0
    name: "Stooges"
    owner: user_0
    user_1: true
    user_2: true
  group_1
    name: "Chips"
    owner: "user_3"
    user_4: true
使用这种结构,不需要密码或“发送邀请”

组创建者通过用户界面添加他们想要的用户,可能会通知用户,然后将其放入组中。只有当用户uid_是组时,规则才允许访问组。如果组创建者删除了该用户,他们将无法访问该组

按照这些规则(需要测试,所以不要复制/粘贴)


使用这种方法,新用户将如何提交以加入组,他们必须输入ownerId作为加入组请求的一部分!?不,其他信息将是GroupID的子项如果我理解你的意思,那么任何人都可以加入该组而无需输入密码?只要他们知道groupId?是的,只有所有者可以访问密码,您可以向用户添加一个
approved
字段,以便所有者可以接受该组的其他用户邀请。您可以演示在Firebase中如何工作吗?!结构会是什么样子,我猜批准必须是一个列表,在这个列表中,组管理员可以从所有请求加入的用户那里获得批准,并最终允许用户正确加入组?这似乎是一种奇怪的数据结构方式。为什么您首先需要一个组密码?i、 e.有人需要创建组,然后添加用户,由于用户已经是组的一部分,密码的功能是什么?我们可能需要更好地理解用例,以提供任何类型的准确答案。原因是,一旦该组由该组的管理员创建,用户可以通过输入groupid和密码请求加入该组。他们从哪里获得groupid和密码?当管理员邀请用户加入该组时,它将由管理员发送。这就是应用程序的工作方式。是的,如果管理员将所有用户添加到他的组中,则此项工作有效,但如果所有者(管理员)为为用户提供groupid和密码,以便用户通过当前计划的UI添加自己。您真的不需要额外的密码和额外的步骤发送电子邮件邀请用户等。该过程应该只是应用程序中的一个简单步骤,组的创建者可以在其中选择要添加的用户。超级简单,大大降低了通过电子邮件、附加密码等方式添加用户的复杂性和逻辑性。此外,规则是您用来保护数据和限制访问的东西-使用另一种密码可以绕过已经内置的功能。@如果所有用户都可以查看组名,则可以按照这些思路学习IOS,当用户正在浏览并希望访问组时,他可以(在UI中)单击请求访问按钮,所有者将收到用户希望访问的事件。然后,他可以允许将uid:true添加到组节点,然后该用户将拥有访问权限。实施起来非常简单,而且非常灵活。@learningiOS解决方案的另一个缺点是,任何拥有密码的人都可以访问该组。那太不安全了!在我的解决方案中,它只锁定那些应该有访问权限的用户,并且由组管理员随时控制这些用户。如果管理员想删除一个用户怎么办?然后他必须更改密码,然后通知所有其他用户密码已更改。从组中删除uid不是更容易吗?