gpt4 book ai didi

javascript - 使用 Firebase 处理客户端授权

转载 作者:行者123 更新时间:2023-12-03 02:02:09 27 4
gpt4 key购买 nike

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

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

想要做的是将 Angular 色:'admin'的单个键/值附加到用户的身份验证记录中,以便我可以使用以下命令进行身份验证和授权:仅对 Firebase 后端进行一次基于客户端的调用。

  • 我读过有关将自定义声明附加到 Firebase 身份验证记录的信息,但我只看到有人使用 Firebase 管理库(后端)来设置 token 并解析 token 。如果可以的话,我会尝试不通过 Firebase 函数或自定义 Express 服务器添加其他调用。

  • 向 RTDB 添加单独的用户配置文件记录很容易,我可以在那里存储身份验证数据。然而,这总是需要同时调用身份验证和授权,这似乎又非常低效,并且排除了客户端的安全离线使用(如果 RTDB 上的 Angular 色发生变化)。

  • 进行基于客户端的身份验证调用,然后触发强制的第二个基于客户端的调用以从可实现 Firebase 管理的 Firebase 函数(或任何其他后端服务)检索授权数据,这似乎也效率低下图书馆。

主要问题:是否有一种方法可以使用 JavaScript 来实现通过向后端发出单个请求并在客户端上处理来从 Firebase 身份验证服务设置/检索身份验证和授权数据的目标?

最佳答案

您给出的两个选项是自定义 Angular 色的惯用方法。

  • 如果您将 Angular 色作为自定义声明嵌入到用户的 token 中,您将在身份验证请求中获取它。由于这是一项提升权限的操作,因此应在受信任的环境中完成,例如您控制的服务器、Cloud Functions 或(如果不频繁)在您的开发计算机上完成。

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

两者的组合也是可能的:手动识别初始“系统管理员”UID,然后在数据库安全规则中使用它来允许向其他用户授予附加权限。但这也将在数据库中具有 Angular 色。

我建议不要寻找不使用这些惯用方法的理由,而是实现一种方法并看看您的担忧是否在实践中浮出水面。

关于javascript - 使用 Firebase 处理客户端授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49958168/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com