Test Mode权限过期,求适配含用户登录注册及资料修改功能的Firebase Realtime Database安全规则
适配当前开发阶段的Firebase Realtime Database安全规则配置
这套规则完全匹配你当前的开发进度,覆盖用户登录、注册、个人信息修改的全流程功能需求,同时解决原Test Mode权限到期、公开访问的安全问题,部署后即可直接正常使用。
规则适配前提
默认遵循通用的用户数据存储结构:你的用户个人信息(昵称、绑定邮箱等)统一存储在数据库根路径下的users节点下,每个用户的专属子节点ID与Firebase Authentication返回的用户唯一UID完全对应。
可直接部署的规则代码
{ "rules": { // 全局默认拦截所有未明确授权的请求 ".read": false, ".write": false, "users": { // 动态匹配每个用户的专属数据节点 "$uid": { // 仅允许登录状态的用户本人读写自己的节点数据 ".read": "auth != null && auth.uid == $uid", ".write": "auth != null && auth.uid == $uid", // 对昵称字段加基础格式校验 "nickname": { ".validate": "newData.isString() && newData.val().length >= 2 && newData.val().length <= 20" }, // 对邮箱字段做一致性校验,确保和Auth认证的绑定邮箱匹配 "email": { ".validate": "newData.isString() && newData.val() === auth.token.email" }, // 明确禁止客户端直接修改密码类敏感字段 "password": { ".read": false, ".write": false } } } } }
规则特性说明
- 权限边界清晰:拒绝所有未登录用户的跨用户数据访问,彻底解决原Test Mode全公开的安全风险
- 无自动过期限制:部署后不会再出现30天周期到期自动拦截所有请求的问题,只要规则保持在线就不会中断业务请求
- 功能完全适配:不会拦截登录注册、修改昵称、修改绑定邮箱的正常客户端请求,不需要额外调整现有业务代码
- 减少脏数据:内置的字段校验规则会自动拦截长度不合规的昵称、不匹配认证状态的无效邮箱写入,降低开发阶段的数据清洗成本
- 适配密码修改流程:密码相关操作不需要直连Realtime Database,直接调用Firebase Auth SDK内置的修改密码、重置密码接口即可,不需要数据库开放对应权限,安全性更高
小提示:如果后续开发需要新增公共功能(比如全站公告、公开内容列表),只需要在规则里给对应路径单独加细分权限即可,不需要改动全局默认拦截的基础配置。
内容的提问来源于stack exchange,提问作者Rockz
相关产品推荐
相关产品推荐

