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

Python对接Firebase实时数据库如何配置规则实现用户仅访问自身数据

问题根源分析
  • 原规则存在语法错误:规则字符串拼接时引号不匹配,会直接导致规则校验失败无法生效
  • 原规则适配的users节点不存在:你的实际数据库根节点为kayitlar和musderi,原规则完全没有覆盖这两个业务节点,等于之前的规则根本没生效,才会出现用户能拉全量数据的问题
  • 身份标识不匹配:你的数据中用编码后的邮箱作为用户唯一标识,而原规则是用Firebase Auth返回的auth.uid做匹配,二者对应不上,权限校验自然失败
  • 注册逻辑无对应权限:新用户注册时需要在musderi节点写入自己的账号信息,原规则没有开放对应的写入权限,导致注册失败
  • 数据请求路径不合理:你现在直接请求数据库根路径拉全量数据,就算规则配置正确,根路径没有读权限也会请求失败,后续需要调整为拉取当前用户对应的子节点
调整方案

1. 修改Firebase Realtime Database安全规则

替换原有规则为以下内容即可同时满足权限控制和注册需求:

{
  "rules": {
    "musderi": {
      "$user_email_encode": {
        ".read": "auth != null && $user_email_encode == auth.token.email.replace('.', '-')",
        ".write": "auth != null && $user_email_encode == auth.token.email.replace('.', '-')"
      }
    },
    "kayitlar": {
      "$record_id": {
        "$user_email_encode": {
          ".read": "auth != null && $user_email_encode == auth.token.email.replace('.', '-')",
          ".write": "auth != null && $user_email_encode == auth.token.email.replace('.', '-')"
        }
      }
    },
    ".read": false,
    ".write": false
  }
}

规则逻辑说明:

  • 全局根路径默认禁止所有读写,避免越权访问未配置的节点
  • musderi节点下的每个子节点都是编码后的邮箱,仅对应邮箱的登录用户可以读写自己的账号信息,新用户注册时只要先完成Firebase Auth账号创建、拿到有效token后,用自己的邮箱编码作为节点名写入即可,不会被拦截
  • kayitlar节点下的每条记录仅对应用户可以读写,其他用户无法访问

2. 调整数据请求逻辑

原有拉取全量根路径的逻辑需要修改为拉取当前用户对应的子节点,示例调整后的代码:

# 从Firebase Auth登录结果中获取当前登录用户的邮箱
current_user_email = "当前登录用户的邮箱"
email_encode = current_user_email.replace('.', '-')
# 请求自己的账号信息
user_info_req = requests.get(f"{self.url}/musderi/{email_encode}?auth={self.auth}")
user_info = user_info_req.json()
# 请求自己的业务记录
kayitlar_req = requests.get(f"{self.url}/kayitlar?auth={self.auth}")
all_kayitlar = kayitlar_req.json()
user_kayitlar = [item for item in all_kayitlar.values() if email_encode in item]

注意:不要在数据库中存储明文密码,Firebase Auth已经托管了密码的加密存储,自行存储明文密码存在严重数据泄露风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:09:02