Flutter新手登录不同账号可查看其他用户信息,求Firebase相关解决方案
问题根因与解决方案
你遇到的不同账号可查看其他用户信息的越权访问问题,核心原因基本为Firebase安全规则配置错误或前端查询逻辑不合理,可按照以下步骤排查修正:
- 确认数据库存储结构:所有用户私有数据必须存储在以自身UID为唯一标识的独立路径下,例如Firestore建议采用
users/{userUid}/私有数据的层级结构,Realtime Database建议采用"users": { "$uid": { 私有数据 } }的结构。 - 修正安全规则配置,仅允许用户访问自身UID对应路径下的数据:
若使用Firestore,参考规则如下:
若使用Realtime Database,参考规则如下:rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /users/{userId}/{document=**} { allow read, write: if request.auth != null && request.auth.uid == userId; } // 公共数据路径可单独配置公开访问权限 } }{ "rules": { "users": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" } } } } - 排查Flutter侧查询代码:禁止直接查询全量用户集合/节点,查询私有数据时必须限定当前登录用户的UID路径,例如正确写法为
FirebaseFirestore.instance.collection('users').doc(FirebaseAuth.instance.currentUser!.uid),不要直接写collection('users')查询全量数据。 - 规则配置完成后,使用Firebase控制台自带的规则测试工具,模拟不同UID的登录请求验证权限,确认跨UID访问已被拦截后再正式使用。
内容的提问来源于stack exchange,提问作者Rekkles Senpai
相关产品推荐
相关产品推荐

