【问题标题】:How to implement collaborator invitations using firebase?如何使用 Firebase 实现协作者邀请?
【发布时间】:2014-02-26 12:50:29
【问题描述】:

我正在开发一个带有 firebase 和 angular 和 angularfire 的应用程序。我想实施一个 “邀请协作者”功能与 firebase 自身实现协作的方式非常相似——也就是说,应用用户可以输入电子邮件地址来邀请协作者,协作者将发送电子邮件并生成“inviteToken”,就像邀请协作者时所做的那样火力基地本身。 我知道安全规则(限制协作者访问)和架构设计( /collaborators 'folder' ?)是一个方面,可以使用本机 firebase 和 angular 来完成。我的问题是如何最好地实施邀请电子邮件和“inviteToken”?实现这种邀请功能最方便的方法是什么?可以使用本机firebase来完成吗?还是需要实现单独的服务器端代码(nodejs?)?也许 firebase 团队的某个人可以根据 firebase 本身如何实现协作来发表意见。

【问题讨论】:

  • 你最后是怎么处理的?你把事情解决了吗?

标签: firebase angularfire firebase-security


【解决方案1】:

您可以通过对要与之共享特定数据的用户的电子邮件地址进行哈希处理,并将其存储在权限字段下来实现协作。

例如,让我们从 'user1' 拥有的路径 /items/item1 开始:

{
  "items": {
    "item1": {
      "data": "foobar",
      "permissions": {
        "user1": true
      }
    }
  }
}

您需要为数据设置安全规则,如下所示:

{
  "rules": {
    "items": {
      "$item": {
        ".read": "data.child('permissions').hasChild(auth.uid)",
        ".write": "data.child('permissions').hasChild(auth.uid)" 
      }
    }
  }
}

现在当 'user1' 想要与 'user2' 共享 'item1' 时,他们将简单地写入值 'user2' 并在权限键下将其设置为 true。您可以将“权限”键的结构扩展为您想要的粒度(例如:协作者只能读取,但所有者可以读取和写入等)

例如,在实践中,您可能希望使用用户电子邮件地址的哈希值。还可以查看 Simple Login 以获得一种简单的方法来验证您的用户(一旦通过验证,上面安全规则中使用的 auth 变量会自动为您设置)。

【讨论】:

  • 感谢您的回复,但是,根据我的理解,给出的示例似乎不起作用,因为 auth.id 不等于散列电子邮件(user1 实际上是电子邮件散列值)。我们如何在安全规则中访问登录用户的电子邮件哈希?我正在使用 firebase 简单登录,并且 auth 对象似乎没有电子邮件属性。是否有可用于此目的的未记录身份验证属性?请澄清。
猜你喜欢
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 2020-01-16
  • 2018-09-04
  • 2018-06-12
  • 1970-01-01
  • 2020-12-20
  • 1970-01-01
相关资源
最近更新 更多