安全与风控
为应用添加 Firebase 登录、用户管理与鉴权规则
适用于使用 Firebase Authentication 实现用户登录、用户管理,并用 `request.auth` 保护 Firestore/Storage 数据的场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
为应用添加 Firebase 登录、用户特定
解决思路
- 准备 Firebase 项目:用 `npx -y firebase-tools@latest projects:create` 创建项目(见 `firebase-basics`)。
- 准备 Firebase CLI:安装并登录 Firebase CLI(见 `firebase-basics`);可通过 `npx -y firebase-tools@latest` 使用,无需全局安装。
- 选择并启用身份提供者:支持 Email/Password、Google/Facebook/Twitter/GitHub/Microsoft/Apple 等联合身份提供者、Phone Number(短信)、Anonymous(可后续链接为永久账号)、Custom Auth(接入现有认证系统);默认推荐使用 Google Sign In。
- 通过 CLI 启用认证时,仅能启用 Google Sign In、匿名认证和 email/password;其他提供者需用 Firebase Console。
- 在 `firebase.json` 中添加 `auth` 块配置认证:设置 `authorizedDomains`(如 `["localhost"]`)和 `providers`(如 `anonymous: true`、`emailPassword: true`、`googleSignIn` 下的 `oAuthBrandDisplayName`、`supportEmail`)。
- 若 Google Sign-In 弹窗立即关闭并报 `[firebase_auth/unauthorized-domain]`,需把域名加入 Authorized Domains;本地开发确保 `localhost` 在 Firebase Console 或 `firebase.json` 的 `authorizedDomains` 中;不要在 Authorized Domains 中包含协议或端口(用 `localhost`,不要用 `http://localhost:9090`)。
- 修改 `firebase.json` 后必须运行 `npx -y firebase-tools@latest deploy --only auth` 部署 auth 配置,否则 Google Sign-In、email/password 等提供者不会生效,也不会为应用平台自动生成所需 OAuth 客户端。
- 在 Firebase Console 启用其他提供者:访问 https://console.firebase.google.com/project/_/authentication/providers ,选择项目,启用所需 Sign-in providers(如 Email/Password、Google)。
- 按平台接入客户端 SDK:Web 参见 `references/client_sdk_web.md`;Flutter 参见 `references/flutter_setup.md`;Android (Kotlin) 参见 `references/client_sdk_android.md`。
- 用 `uid` 作为用户唯一标识;该 ID 在所有提供者间保证唯一。
- 按需使用用户属性:`email`、`displayName`、`photoURL`、`emailVerified`。
- 登录后获取 ID Token(JWT),在请求 Firebase 服务(Realtime Database、Cloud Storage、Firestore)或自建后端时用它标识用户。
- 管理令牌有效期:ID Token 短期有效(1 小时),用于验证身份;Refresh Token 长期有效,用于获取新的 ID Token。
- 使用 Firestore/Storage 安全规则中的 `request.auth` 保护数据;参见 `references/security_rules.md`。
适用边界 · 注意事项
- 应用不需要用户登录、用户管理或基于 auth 规则的安全数据访问时,不必使用 Firebase Authentication。
- 不希望依赖 Firebase 云服务,或无法使用 Firebase Console/CLI 配置时,不适用。
- 需要完全自建认证且不接受 Firebase Auth 的提供者/令牌模型时,应改用 Custom Auth 或自建方案。