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

Firestore安全规则能否检查请求用户邮箱验证状态?无需自定义令牌

在Firebase Firestore安全规则中验证用户邮箱的问题

没问题,我来帮你理清这两个关键点:

  • 无需自定义令牌也能验证用户邮箱
    Firebase Auth会自动把已登录用户的核心身份信息(包括emailVerified状态)同步到Firestore安全规则的request.auth对象里——不管你用的是邮箱密码登录、第三方OAuth登录(比如Google、Facebook)还是其他Firebase Auth支持的登录方式,都不需要额外生成自定义令牌来获取这个字段。

  • 你写的isEmailVerified()函数是可行的,但建议补充非空检查
    直接判断request.auth.emailVerified确实能拿到用户的邮箱验证状态,但如果遇到未登录的请求(此时request.auth为null),规则会抛出错误。所以更稳妥的写法是先确认用户已登录,再检查邮箱验证状态:

function isEmailVerified() {
  return request.auth != null && request.auth.emailVerified == true;
}

举个实际使用的例子,比如你想限制只有邮箱已验证的用户才能读取verifiedContent集合:

match /verifiedContent/{document} {
  allow read: if isEmailVerified();
}

需要注意的是,emailVerified状态是由Firebase Auth维护的——当用户完成邮箱验证流程(比如点击发送到邮箱的验证链接)后,这个状态会自动同步到安全规则中,不需要你手动更新或传递任何额外数据。如果用户是匿名登录的,request.auth里不会有email和emailVerified字段,这也是为什么要加非空检查的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:59:44