【发布时间】:2019-04-28 05:09:17
【问题描述】:
Firebase 调用函数 (functions.https.onCall) 未将上下文参数值发送到安全规则。这意味着如果我们从 UI 调用 firebase on call 函数来更新 firestore db 的内容,我需要在该函数中进行所有安全检查并使用 admin sdk 来更新 firestore db。我无法使用 firebase sdk 和 firestore 安全规则进行认证更新。
export const registerOrganizationTest = functions.https.onCall(async (data, context) => {
try { firebase.firestore().collection('Organizations').doc('counts').get()
await firebase.firestore().collection('Organizations').doc('counts').set(orgcounts, { merge: true })
await firebase.firestore().collection('Organizations').
doc((orgcounts.organizationCount).toString()).
set(organization, { merge: true })
}
catch (err) {
throw new functions.https.HttpsError("internal", err);
}
})
Firestore 会在违反安全规则时停止更新。但是,如果从 UI 运行相同的语句,它们会作为上下文参数传递给安全规则。
【问题讨论】:
标签: google-cloud-firestore google-cloud-functions firebase-security