我在 Cloud 函数和 Firestore 规则方面遇到了一些麻烦。我想在 Firestore 上使用具有有限权限的云功能,并且只授予安全规则中定义的访问权限
它在 RTDB 上没有问题,但在 Firestore 上没有问题。
我已经尝试过这个规则
service cloud.firestore {
match /databases/{database}/documents {
match /init/{ID=**} {
allow read, write: if true;
}
match /test/{ID=**} {
allow read, write: if false;
}
}
}
还有这个
const admin = require('firebase-admin');
const functions = require('firebase-functions');
const FieldValue = require('firebase-admin').firestore.FieldValue;
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: 'https://******.firebaseio.com',
databaseAuthVariableOverride: {
uid: 'my-worker',
},
});
const db = admin.firestore();
exports.onTestRights = functions.firestore
.document('init/{initID}')
.onCreate((event) => {
const initID = event.params.initID;
return db.collection('test').doc(initID).set({'random key': 'random value'}).then(()=>{
console.log('working');
return;
}).catch((err) =>{
console.log('error: ', err);
return;
});
});
但它仍然是这样写的,而它应该是“权限被拒绝”
有人知道firestore上是否正常(或尚未植入)或我误解了什么?
编辑:
当然,我的最终目标不是使用此规则,而是仅使用 ( allow read, write: if request.auth.uid == 'my-worker';
)授予对某些文档/集合的写/读访问权限
Edit2: 如果在使用此模型的过程中没有更改,我想使用安全规则进行检查