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

Firestore分布式点赞计数器无云函数安全校验与数据同步方案咨询

不使用云函数的点赞计数器安全与同步方案

防止用户篡改点赞计数

  • 替换自定义递增逻辑,直接使用Firestore原生的FieldValue.increment()原子操作接口,配合安全规则强制校验计数字段的变化量:
    // 安全规则示例
    match /posts/{postId} {
      allow update: if (
        // 仅允许点赞计数每次+1或-1,不允许直接赋值任意数值
        request.resource.data.likeCount == resource.data.likeCount + 1 ||
        request.resource.data.likeCount == resource.data.likeCount - 1
      ) && request.resource.data.likeCount is number;
    }
    
    该规则会直接拦截用户篡改递增值的请求,只有合法的±1变更会被放行。

保证计数器与点赞记录完全同步

安全规则本身不支持集合聚合查询,但可以通过操作绑定+事务的方案从源头保证两者同步,无需统计全集合数据:

  • 规范客户端操作逻辑:所有点赞/取消点赞请求必须在同一个事务中完成两个操作:
    1. 新增/删除单条点赞记录(建议将点赞文档ID设为{postId}_{userId}格式,天然避免重复点赞)
    2. 调用FieldValue.increment(1)/FieldValue.increment(-1)修改对应帖子的点赞计数
  • 在安全规则中增加绑定校验:
    • 禁止单独修改帖子的点赞计数,所有计数变更必须伴随对应点赞记录的新增/删除操作
    • 禁止单独新增/删除点赞记录,所有点赞记录的变更必须伴随对应帖子计数的±1操作
    • 校验点赞记录的操作人和请求发起方一致,避免代刷点赞
  • 该方案从操作链路强制要求计数和点赞记录一一对应,从根源上保证两者数值完全一致,无需额外的后端校验逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:57:03