我能够完成在前端生成Firebase身份验证令牌,将其发送到Firebase云功能以及使用auth.verifyIdToken对其进行解码并提取用户ID的过程。
我想使用Cloud Firestore,但是我不知道从Firebase Functions向Cloud Firestore发出请求时如何使用用户令牌/ ID。我的目标是在创建Cloud Firestore安全规则时使这些变量可用。
a)我需要在Firestore请求中传递这些变量吗?
示例:
postsRef.where({uid //somehow?}, 'published', '==', true).get();
b)我应该使用auth.setCustomUserClaims?
来使用Admin SDK时唯一的选择吗?
c)ID和解码令牌之间的用法有何不同?我应该将两者都传递给Cloud Firestore吗?那有可能吗?
让我知道您的想法,任何信息都对您有帮助。
谢谢
答案 0 :(得分:0)
您实际上无法做到。使用服务器SDK(包括Firebase Admin SDK)之一从后端代码查询Firestore时,查询将始终绕过所有安全规则。无法更改此行为。规则仅适用于来自Web和移动客户端的直接访问。
您要做的是在后端代码中复制规则的工作,以确保在查询之前所有条件均正确。