首页 > 解决方案 > Firestore 规则在模拟器中工作但不使用 admin sdk

问题描述

我仅从后端(应用引擎标准 - node.js)在 Datastore 模式下使用 Firestore

我在 Firestore 控制台中指定了这些简单的规则:

rules_version = '2';
service cloud.firestore {
 match /databases/{database}/documents {
   match /{document=**} {
     allow read, write: if false;
   }

   match /users/{userID} {

           function currenciesValid() {
           return request.resource.data.currencies.gold.balance is int && 
         request.resource.data.currencies.gold.balance >= 0 &&
         request.resource.data.currencies.mana.balance is int &&
         request.resource.data.currencies.mana.balance >= 0
       }

       allow write: if currenciesValid();
   }
 }
}

在模拟器中运行(创建和更新)时,规则按预期工作。

但是,部署后它对应用程序没有影响,例如,我能够创建 1.5 的黄金余额。

知道发生了什么吗?

我的文档路径是 users/user_{uid} 其中 uid 是 firebase auth uid。

只是为了澄清,我实际上是从我的计算机连接到 Firestore。尚未测试来自应用引擎实例的规则。

标签: firebasegoogle-cloud-firestorefirebase-security

解决方案


推荐阅读