Firebase 规则如何获取“request.auth.uid”字段?
Posted
技术标签:
【中文标题】Firebase 规则如何获取“request.auth.uid”字段?【英文标题】:How Firebase rules get 'request.auth.uid' field? 【发布时间】:2022-01-05 12:19:30 【问题描述】:在应用程序的主线程中,很明显,任何Firestore
查询都会从当前FirebaseAuth
登录中获取request.auth
字段。但我不确定何时涉及工作线程。
假设使用我的应用程序的用户发送一些数据以存储在Firestore
中,其规则允许基于用户 ID 进行写入。现在我将任务添加到 android WorkManager
。即使在工作开始之前,如果用户退出,工作是否成功完成?如果不是,那么正确的做法是什么?
【问题讨论】:
【参考方案1】:您可以参考这个page 了解有关 WorkManager 基础知识的详细信息。
WorkerManager 不管理任务中的详细信息,特别是用于对 Firestore 进行 API 调用的凭据。
任何存储在 WorkerManager 中的任务都应该包含一个不基于会话的身份验证方法(因为此会话已关闭或过期),或者能够生成自己的会话。
解释一下,Firebase 用户可以有多种与 account 相关联的身份验证方法,其中一种方法可以是基于设备的(例如使用 phone number authentication 或 Google Authentication)。
与documentation 一样,此登录信息可以由应用程序存储,以便它可以使用它们从后台任务自行登录。本质上是使用用户的凭据来启动新的登录。由于凭据与设备的登录用户一起存储,因此用于生成 Firebase 会话。
另一个选项以类似的方式工作,但具有更固定的登录持续时间,即一旦通过 SMS 进行身份验证,此令牌将绑定到设备的电话号码,并可用于使用相同的凭据通过以下方式进行身份验证SafetyNet 用于Firebase Authentication。
【讨论】:
目前我只使用手机验证,这需要用户输入发送的 otp。在这种情况下,我如何自行登录?我找不到与此相关的任何文档或代码 sn-p。如果你找到了,请给它链接。 这个Send a verification code to the user's phone 能回答你的问题吗? 不,我想知道如何从工作线程登录帐户。 如果有帮助,您可以查看documentation 中的匿名身份验证!以上是关于Firebase 规则如何获取“request.auth.uid”字段?的主要内容,如果未能解决你的问题,请参考以下文章
获取符合存储规则的 Firebase Cloud Storage 的客户端 URL