如何解决是否可以将由Firestore规则中的Cloud Functions触发的请求与经过用户身份验证的请求区分开?
文档的"Extend with Cloud Functions"部分说:
Cloud Functions在受信任的环境中执行,这意味着它们被授权为您项目中的服务帐户。您可以使用Firebase Admin SDK进行读取和写入:
API reference for rules说request.auth
将包含uid和令牌映射。 firebase.identities
和firebase.sign_in_provider
似乎都没有包含“ serviceAccount ”键来指定如何授权请求。
用例:我已经为用户实现了基于角色的机制,并且希望允许对某些角色和allow delete: if request.auth.uid != null && isOneOfRoles(['super-admin','admin']);
进行操作。我不能仅仅依靠检查request.auth.uid != null;
。
解决方法
使用firebase-admin
SDK从Cloud Functions发出的请求将不接受安全规则的评估。他们使用服务帐户授权,这意味着他们无需遵守规则。
如果您想作为用户授权并通过安全规则保护您的写入,则可以尝试使用Cloud Functions中的Web SDK。您可以使用自定义身份验证来创建要在Cloud Functions中使用的用户帐户,尽管这样做可能会减慢速度,因为在使用SDK之前,您必须在每个函数调用中进行身份验证。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。