Nativescript:如何以管理员身份登录并管理 Firebase 中的用户帐户
Nativescript: How to login as an admin and manage user account in Firebase
我正在努力寻找有关如何使用 Firebase Admin 服务来管理用户帐户(特别是从 Firebase Auth 中删除用户)的解决方案。
这个nativescript-plugin-firebase提供了对firebase服务的所有可能调用,但是没有关于管理具有管理员权限的用户的描述。也许有人有类似的问题或可以分享解决方法?
NativeScript 插件是 Firebase 客户端库的包装器,您可以在交付给用户的 NativeScript 应用中使用它。
Firebase Admin SDK 授予对您的 Firebase 项目的所有后端资源的管理访问权限。因此,它们只能在受信任的环境中使用,例如您的开发机器、您控制的服务器或 Cloud Functions。
它们明确地不用于您发送给客户的应用程序代码,因为 Admin SDK 运行所需的凭证会授予比您的权限更多的权限用户应该有。
如果您想在 Admin SDK 不可用的平台上创建一个公开 Admin SDK 某些功能的管理页面,您可以将该功能包装在 Cloud Function 中,确保调用者是正确授权(如图 here),然后从您的应用程序中调用它。
以下是我在我的应用程序中管理它的方法:
我的用户有"admin"、"manager"等权限
当 "admin" 登录应用程序时,他们可以通过应用程序的界面添加、更新、删除其他用户
这是通过将更改请求推送到实时数据库中的 "updateUser" 节点来实现的 - NOT 到数据库中的实际用户记录.确保 Firebase 规则仅允许 "admin" 用户写入此节点。
创建这个新节点后,我禁用了表单和提交按钮,因此无法进行更多更改。然后,我让应用监听对以下内容的任何更改:
- 这个新创建的 "updateUser" 节点(类似于:
updateUser/xkekek393kdkd
)
- 实际用户档案记录
我有一个 Firebase 云函数监听任何写入那个 "updateUser" 节点
当函数触发时,它使用 admin-sdk 对用户配置文件执行实际更改 AND 他们的 Firebase 身份验证帐户(电子邮件地址、密码, ETC)。然后,admin-sdk 更新 "updateUser" 节点,状态如下:
{
status: "success",
message: "User updated"
}
或
{
status: "fail",
message: "Email address already in use"
}
客户端应用程序检测到 "updateUser" 节点的更改,并向用户提供操作已完成的反馈。
客户端应用程序还会检测对真实用户配置文件节点的更改并相应地更新 UI。
优点:
只有受信任的资源(Firebase 云函数)才能访问管理员权限。
所有业务逻辑和验证都是在服务器端而不是客户端执行的。
我正在努力寻找有关如何使用 Firebase Admin 服务来管理用户帐户(特别是从 Firebase Auth 中删除用户)的解决方案。
这个nativescript-plugin-firebase提供了对firebase服务的所有可能调用,但是没有关于管理具有管理员权限的用户的描述。也许有人有类似的问题或可以分享解决方法?
NativeScript 插件是 Firebase 客户端库的包装器,您可以在交付给用户的 NativeScript 应用中使用它。
Firebase Admin SDK 授予对您的 Firebase 项目的所有后端资源的管理访问权限。因此,它们只能在受信任的环境中使用,例如您的开发机器、您控制的服务器或 Cloud Functions。
它们明确地不用于您发送给客户的应用程序代码,因为 Admin SDK 运行所需的凭证会授予比您的权限更多的权限用户应该有。
如果您想在 Admin SDK 不可用的平台上创建一个公开 Admin SDK 某些功能的管理页面,您可以将该功能包装在 Cloud Function 中,确保调用者是正确授权(如图 here),然后从您的应用程序中调用它。
以下是我在我的应用程序中管理它的方法:
我的用户有"admin"、"manager"等权限
当 "admin" 登录应用程序时,他们可以通过应用程序的界面添加、更新、删除其他用户
这是通过将更改请求推送到实时数据库中的 "updateUser" 节点来实现的 - NOT 到数据库中的实际用户记录.确保 Firebase 规则仅允许 "admin" 用户写入此节点。
创建这个新节点后,我禁用了表单和提交按钮,因此无法进行更多更改。然后,我让应用监听对以下内容的任何更改:
- 这个新创建的 "updateUser" 节点(类似于:
updateUser/xkekek393kdkd
) - 实际用户档案记录
- 这个新创建的 "updateUser" 节点(类似于:
我有一个 Firebase 云函数监听任何写入那个 "updateUser" 节点
当函数触发时,它使用 admin-sdk 对用户配置文件执行实际更改 AND 他们的 Firebase 身份验证帐户(电子邮件地址、密码, ETC)。然后,admin-sdk 更新 "updateUser" 节点,状态如下:
{ status: "success", message: "User updated" }
或
{ status: "fail", message: "Email address already in use" }
客户端应用程序检测到 "updateUser" 节点的更改,并向用户提供操作已完成的反馈。
客户端应用程序还会检测对真实用户配置文件节点的更改并相应地更新 UI。
优点:
只有受信任的资源(Firebase 云函数)才能访问管理员权限。
所有业务逻辑和验证都是在服务器端而不是客户端执行的。