无需邮箱认证的Firebase纯密码鉴权实现:避免密码存入Firestore
方案1:仅调整安全规则+客户端配置(最轻量,无需额外服务)
你只需要在客户端发起更新请求时,指定仅写入你需要修改的配置字段(即设置updateMask不包含pw字段),再配合如下安全规则即可:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read; allow update: if // 校验提交的密码正确 request.resource.data.pw == "WordPass" // 要求本次请求的写入字段不包含pw,避免密码落地存储 && !request.writeFields.hasAny(["pw"]) } } }
规则逻辑说明:请求中携带的pw仅会被用作权限校验,不会被纳入实际写入的字段列表,自然不会存储到Firestore中。
方案2:匿名认证+自定义声明(安全性更高,无额外用户输入要求)
如果不想每次更新都携带密码,可以用Firebase匿名认证搭配极简云函数实现,全程不需要用户输入邮箱、手机号:
- 客户端调用
signInAnonymously()完成匿名登录,无任何用户交互 - 客户端将密码提交给云函数校验,校验通过后云函数给当前匿名用户的令牌添加自定义声明
canEdit: true - 调整安全规则直接校验声明即可,后续更新无需再传密码:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read; allow update: if request.auth != null && request.auth.token.canEdit == true; } } }
内容的提问来源于stack exchange,提问作者Peybro
相关产品推荐
相关产品推荐

