使用 Firebase 自定义版权主张(适用于管理员)(Firestore 和 Cloud Storage)



授予管理员权限

我正在使用自定义声明向用户授予管理员权限,方法是在创建"admins/{userId}"中的文档时触发它。

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

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

撤销管理员权限???

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

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

但是,如果我撤销了权限并且用户不刷新他的令牌,他仍然可以编辑/删除 Firestorage 中的所有内容。 而且由于我无法从存储安全访问 Firestore 数据,我什至无法仔细检查"管理员/"方向。

那么,如何可靠地实现消防商店和存储的管理功能呢?

正如 Doug Stevenson 所说,"吊销的管理员"的令牌应在一小时内过期,在此之后刷新的令牌将不包含管理员自定义声明。我认为您使用 Firestore 规则检查您的"管理员"集合而不是自定义声明是正确的。

如果立即撤销对 Firebase 存储的权限至关重要,您可能需要重新设计您的应用,以便只能通过您构建的 Firebase 函数来访问文件,而不是让您的客户端直接访问存储空间,该功能将针对您的 Firestore "管理员"集合验证访问权限授权,并在获得批准后将文件提供给客户端。

最新更新