reactjs - ReactJS 和 Firebase 用户管理员
问题描述
我正在尝试创建一个 React 应用程序,其中具有“管理员”角色的用户可以在 firebase 中创建一个新用户。
工作流程如下所示:
normal login -> check userRole -> if admin: show createUserForm.
据我从文档中阅读,我需要一个 Admin SDK,但问题是 - 如何在客户端应用程序上实现它?有没有人经历过这个过程?
解决方案
Firebase Admin SDK 只能在受信任的环境中使用,即您控制的服务器或 Cloud Functions。它不应该(也不能)在客户端 React 应用程序中使用。
如果您希望允许您的 React 应用程序的某些用户为其他用户创建帐户,您需要将该部分流程移动到可以使用 Admin SDK 的可信环境。
所以流程变成:
- 在客户端代码中检测用户是否是管理员(可能使用自定义声明),如果是,则仅显示表单。
- 使用表单中的输入从您的客户端调用云函数。
- 确保调用 Cloud Functions 的用户已获得授权。
- 使用 Admin SDK 在 Cloud Function 中创建用户帐户。
正如你所看到的,这是相当复杂的。我强烈建议考虑其他用例,例如您希望管理员控制的实际情况。在 Firebase 身份验证中启用提供程序后,任何用户都可以使用该提供程序创建帐户。试图从你的应用程序代码中控制它只是一个问题的根源。通常,您实际上试图控制的是特定用户帐户可以做什么:例如,只有经过批准的用户才能访问某些数据。根据您存储此数据的位置,这更容易控制。例如:如果您将数据存储在 Firebase 数据库中,通常会在这种情况下创建批准用户的白名单(或相反:禁止用户的黑名单)。
推荐阅读
- c# - 我想显示我的线程将在 C# 控制台应用程序中再次运行多少次
- tensorflow - 生产、后端或前端的深度学习模型?
- iot - Windows 设备门户 - 安装应用程序不可见
- google-apps-script - 如何在 Google Apps Script 上只选中一个而不是两个?
- android - Firebase Phone Auth:白名单真实号码是否会导致发送短信?
- svn - pysvn import_pysvn._pysvn_3_6.ClientError:导入文件时需要新的条目名称
- botframework - 为什么 Bot 框架中的语言会自动更改?
- javascript - 双括号 ()() 如何在 JavaScript 中工作?
- google-cloud-platform - 如何使用google提供的模板[pubsub to Datastore]?
- javascript - 需要增加 div 元素的允许最大高度