【问题标题】:Using Firebase Custom Claims for Admins (Firestore & Cloud Storage)为管理员使用 Firebase 自定义声明(Firestore 和 Cloud Storage)
【发布时间】:2018-11-14 21:23:54
【问题描述】:

授予管理员权限

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

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

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

撤销管理员权限???

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

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

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

那么,如何可靠地为 firestore 和 storage 实现管理功能?

【问题讨论】:

  • Auth token 一小时后过期,需要刷新。这会自动发生。自定义声明是否会在一个小时后持续存在,然后客户端上的令牌必须刷新?

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


【解决方案1】:

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

如果立即撤销对 Firebase 存储的权限至关重要,您可能需要重新设计您的应用,以便您的客户不能直接访问存储,而只能通过您构建的 Firebase 函数来访问文件,该函数将根据您的权限验证访问授权Firestore 'admins' 集合,如果获得批准,则将文件提供给客户端。

【讨论】:

    猜你喜欢
    • 2018-05-20
    • 2021-12-25
    • 1970-01-01
    • 2020-06-21
    • 2020-01-27
    • 2020-06-29
    • 2020-08-15
    • 2021-01-24
    • 2020-10-07
    相关资源
    最近更新 更多