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

请求解决:通过request.auth.token.name获取字段值时提示未定义错误

解决方案

你报错的核心原因有两个:一是request.auth.token.name这个属性本身不存在,二是你之前的写法错误地把字符串"request.auth.token.name"当成了字段名,而非动态获取用户名作为键。

根据你的需求,先确认用户的用户名存储在认证信息的哪个字段里,再用该值作为键匹配数据,以下是几种常见场景的写法:

场景1:用户名存在用户显示名(displayName)中

如果你的用户是通过Firebase默认认证方式(如邮箱、Google登录)创建的,用户名通常存在request.auth.displayName里,规则代码修改为:

allow create, delete, update: if request.resource.data[request.auth.displayName] == request.auth.uid;

场景2:用邮箱作为用户名

如果你的业务里直接用用户邮箱当用户名,就用request.auth.email作为键:

allow create, delete, update: if request.resource.data[request.auth.email] == request.auth.uid;

场景3:自定义JWT声明中的用户名

如果你使用自定义令牌登录,且在令牌里添加了username自定义字段,就用request.auth.token.username:

allow create, delete, update: if request.resource.data[request.auth.token.username] == request.auth.uid;

额外注意事项

  • 确保你使用的认证字段(如displayName、email)不为空,否则规则会因无法获取键值而报错
  • 如果你的字段名是经过处理的用户名(比如去掉空格、转义特殊字符),要在规则里做对应字符串处理,示例:
    allow create, delete, update: if request.resource.data[request.auth.displayName.replace(" ", "_")] == request.auth.uid;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:57:45