为管理员使用Firebase自定义声明(Firestore和云存储)

时间:2018-06-05 11:44:09

标签: firebase firebase-authentication google-cloud-firestore firebase-storage

授予管理员权利

我使用自定义声明为用户提供管理员权限,方法是在" admins / {userId}"已创建。

云功能然后设置" admin"用户自定义声明为true的属性。然后用户需要再次登录,他是管理员。

现在,我在Firestore和Storage的安全规则中检查管理员自定义声明,以便用户可以删除/编辑所有内容。

撤销管理员权限

但是当我想撤销用户的管理员权限时,我如何确保权利在任何地方都被撤销。

对于Firestore,我可以添加一个额外的检查,它还可以从Firestore" admins / {userId}"获取数据。方向,不允许访问。

但是如果我撤销权利并且用户不刷新其令牌,他仍然可以编辑/删除Firestorage中的所有内容。 由于我无法从Storage-Security访问Firestore数据,因此我甚至无法仔细检查" admins /"方向。

那么如何可靠地实现firestore和存储的管理功能呢?

1 个答案:

答案 0 :(得分:0)

正如道格·史蒂文森(Doug Stevenson)所说,“已撤消管理员”的令牌应在一个小时内到期,刷新后的令牌将不包含管理员自定义声明。我认为您使用Firestore规则检查“管理员”集合而不是自定义声明是正确的选择。

如果立即撤销对Firebase Storage的权限至关重要,则可能需要重新设计应用程序,以便只能通过您构建的Firebase功能访问文件,而不是让客户端直接访问Storage,而只能通过您构建的Firebase功能访问该文件,该功能将针对您的访问权限进行验证Firestore“管理员”集合,如果获得批准,则将文件提供给客户端。