使用 Firebase 处理客户端授权

Handling client-side authorization with Firebase

我正在构建一个使用 Firebase、Firebase JavaScript SDK、Firebase 身份验证服务和实时数据库的客户端。

根据许多不同的来源,我的身份验证部分运行良好,但我发现授权选项有限,我认为这是一个有效的解决方案。

想要做的是将role: 'admin'中的单个key/value附加到用户的授权记录,这样我就可以进行身份​​验证和授权只有一次基于客户端的 Firebase 后端调用。

主要问题:有没有办法通过 JavaScript 通过对后端的单个请求并在客户端进行处理来实现 setting/retrieving 来自 Firebase 身份验证服务的身份验证和授权数据的目标?

您提供的两个选项是自定义角色的惯用方法。

  • 如果您将角色作为自定义声明嵌入到用户的令牌中,您将在身份验证请求中获得它。由于这是提升权限的操作,因此应该在受信任的环境中完成,例如您控制的服务器、Cloud Functions,或者(如果不经常)从您的开发机器。

  • 如果您不想这样做,并且想将其存储在数据库中,您将需要一个额外的请求。该调用的开销通常不是性能问题。

两者的组合也是可能的:手动识别初始 "system administrator" UID,然后在您的数据库安全规则中使用它以允许向其他用户授予额外的权限。但这也将在数据库中具有角色。

与其寻找不使用这些惯用方法的理由,我建议您实施一种方法,看看您的顾虑是否在实践中浮出水面。