如何在Cloud Firestore规则中访问用户自定义声明custom claims?
Cloud Firestore 自定义声明访问修复方案
你当前代码无法生效的核心原因是自定义声明的访问路径错误。在Firebase安全规则体系中,包括自定义声明在内的所有用户身份属性,都挂载在request.auth.token对象下,而非request.customClaims。
修改后的规则代码如下:
match /companies/{document=**} { allow read: if request.auth != null; allow write: if request.auth != null && request.auth.token.role == "admin"; }
额外注意事项:
- 自定义声明设置完成后,最长需要1小时才能同步到所有Firebase服务的安全规则中,刚设置完测试不生效可以等待同步完成,或让用户重新登录触发身份信息刷新
- 规则判断时注意值的类型匹配,如果你设置的
role值为字符串类型,规则判断时要加引号,避免类型不匹配导致校验失败 - 可以增加额外的判空逻辑避免空指针报错,示例:
request.auth != null && "role" in request.auth.token && request.auth.token.role == "admin"
内容的提问来源于stack exchange,提问作者IgorLima1740
相关产品推荐
相关产品推荐

