You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不依赖客户端的情况下从后端追踪Firebase用户活动?

追踪Firestore认证用户的读写操作(无需依赖客户端)

你完全可以不依赖客户端,通过Firebase的后端机制追踪用户对Firestore的读写操作,下面是两种可靠的方案:

1. 利用Firebase审计日志自动记录

Firebase集成了Google Cloud的审计日志功能,会自动记录所有经过认证的Firestore操作,包含:

  • 操作发起者的UID
  • 操作类型(读、写、更新、删除)
  • 操作的资源路径(集合/文档)
  • 操作时间戳

这些日志由Firebase后端自动生成,完全不经过客户端,不存在被篡改或拦截的风险。你可以:

  • 在Google Cloud Console的「Logging」页面直接查询和筛选这些日志
  • 通过Cloud Logging API将日志导出到BigQuery、Cloud Storage等服务,方便后续统计分析

注意:默认情况下Firebase项目的审计日志是开启的,可在Cloud Console的IAM页面确认「Data Access」日志配置,确保Firestore操作被包含在内。

2. 用Firestore后台触发器自定义记录

如果需要更灵活的日志格式,或是想直接把用户活动存在Firestore里方便查询,可以使用Cloud Functions的Firestore触发器。这种触发器是后端自动触发的,完全不依赖客户端代码,只有当用户操作通过Firestore安全规则验证后才会执行。

比如,记录所有文档的写入(创建、更新、删除)操作:

const { onWrite } = require("firebase-functions/v2/firestore");
const admin = require("firebase-admin");
admin.initializeApp();

exports.trackFirestoreWrites = onWrite({
  document: "{collection}/{docId}" // 通配符匹配所有集合和文档,也可指定特定集合
}, (event) => {
  // 只有认证用户的合法操作才会触发,auth对象必然存在
  const uid = event.auth?.uid;
  if (!uid) return;

  // 判断操作类型
  const isCreate = !event.data.before.exists && event.data.after.exists;
  const isUpdate = event.data.before.exists && event.data.after.exists;
  const isDelete = event.data.before.exists && !event.data.after.exists;
  let operation = "unknown";
  if (isCreate) operation = "create";
  else if (isUpdate) operation = "update";
  else if (isDelete) operation = "delete";

  // 构造日志数据
  const activity = {
    uid: uid,
    operation: operation,
    documentPath: `${event.params.collection}/${event.params.docId}`,
    timestamp: admin.firestore.FieldValue.serverTimestamp()
  };

  // 写入专门的活动日志集合
  return admin.firestore().collection("user_activity_logs").add(activity);
});

两种方案的差异

  • 审计日志:零代码成本,记录所有操作(包括读取),适合合规审计,但日志结构固定,需要导出后处理
  • Firestore触发器:可自定义日志内容,直接存入Firestore方便查询,但只能追踪写入操作(无读操作触发器),需要编写和维护函数

关键注意事项

  • 确保Firestore安全规则严格限制只有认证用户才能访问私有数据,这样所有被记录的操作都来自合法用户,UID完全可信
  • 对于用户的读取操作,目前只能通过审计日志追踪,Firestore暂未提供读操作触发器

内容的提问来源于stack exchange,提问作者Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 13:39:52