是否可以将由Firestore规则中的Cloud Functions触发的请求与经过用户身份验证的请求区分开?

问题描述

文档的"Extend with Cloud Functions"部分说:

Cloud Functions在受信任的环境中执行,这意味着它们被授权为您项目中的服务帐户。您可以使用Firebase Admin SDK进行读取和写入:

API reference for rulesrequest.auth将包含uid和令牌映射。 firebase.identitiesfirebase.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之前,您必须在每个函数调用中进行身份验证。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...