【问题标题】:Firebase on call function htpps.oncall is not sending context information to security rulesFirebase oncall 函数 https.oncall 未将上下文信息发送到安全规则
【发布时间】: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


    【解决方案1】:

    安全规则不适用于后端代码。当您调用 Cloud Functions 或其他使用 Admin SDK 或其他 Cloud SDK 作为后端组件的后端代码时,来自该代码的所有访问都会完全绕过安全规则。仅当直接从移动和 Web 客户端 SDK(Android、iOS、Unity 等)访问 Firestore 时,安全规则才适用。

    【讨论】:

      猜你喜欢
      • 2019-04-16
      • 2014-12-19
      • 2022-09-26
      • 2016-06-27
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      • 2020-09-10
      相关资源
      最近更新 更多