授予管理员权利
我使用自定义声明为用户提供管理员权限,方法是在" admins / {userId}"已创建。
云功能然后设置" admin"用户自定义声明为true的属性。然后用户需要再次登录,他是管理员。
现在,我在Firestore和Storage的安全规则中检查管理员自定义声明,以便用户可以删除/编辑所有内容。
撤销管理员权限
但是当我想撤销用户的管理员权限时,我如何确保权利在任何地方都被撤销。
对于Firestore,我可以添加一个额外的检查,它还可以从Firestore" admins / {userId}"获取数据。方向,不允许访问。
但是如果我撤销权利并且用户不刷新其令牌,他仍然可以编辑/删除Firestorage中的所有内容。 由于我无法从Storage-Security访问Firestore数据,因此我甚至无法仔细检查" admins /"方向。
那么如何可靠地实现firestore和存储的管理功能呢?
答案 0 :(得分:0)
正如道格·史蒂文森(Doug Stevenson)所说,“已撤消管理员”的令牌应在一个小时内到期,刷新后的令牌将不包含管理员自定义声明。我认为您使用Firestore规则检查“管理员”集合而不是自定义声明是正确的选择。
如果立即撤销对Firebase Storage的权限至关重要,则可能需要重新设计应用程序,以便只能通过您构建的Firebase功能访问文件,而不是让客户端直接访问Storage,而只能通过您构建的Firebase功能访问该文件,该功能将针对您的访问权限进行验证Firestore“管理员”集合,如果获得批准,则将文件提供给客户端。