SuperAPI AI 工具集

firebase-auth

安全与审计

查看项目

更新于 10-15 13:43

技能介绍

用途

Firebase Authentication 用于为应用构建完整的用户身份认证体系,涵盖注册、登录、登出、密码重置、会话保持与令牌校验等核心流程。资料将其标注为生产能力就绪(Production Ready),依赖为独立技能(standalone skill),并列出最新版本 firebase@12.8.0、firebase-admin@13.6.0。

主要能力

  1. 邮箱/密码认证:支持注册(createUserWithEmailAndPassword)、登录(signInWithEmailAndPassword)、登出(signOut)、发送验证邮件(sendEmailVerification)、密码重置(sendPasswordResetEmail、confirmPasswordReset)以及更新显示名称(updateProfile)。
  2. OAuth 第三方登录:支持 Google、GitHub、Twitter、Facebook、Microsoft、Apple 等提供商,可通过弹窗(signInWithPopup)或重定向(signInWithRedirect)方式登录,并通过 getRedirectResult 处理重定向结果。
  3. 认证状态管理:通过 onAuthStateChanged 监听登录状态变化,提供 React Hook 与 AuthContext Provider 示例。
  4. 令牌管理:客户端可通过 user.getIdToken(forceRefresh) 获取 ID Token 用于 API 调用;服务端使用 Admin SDK 的 verifyIdToken 校验令牌。
  5. 会话 Cookie:支持创建会话 Cookie(createSessionCookie)、校验会话 Cookie(verifySessionCookie)与撤销会话(revokeRefreshTokens),可配合服务端渲染使用。
  6. 自定义 Claims 与角色:通过 adminAuth.setCustomUserClaims 设置角色与权限,客户端使用 getIdTokenResult(true) 读取最新 Claims。
  7. 电话认证:使用 RecaptchaVerifier 与 signInWithPhoneNumber 发送验证码,再通过 confirmationResult.confirm 校验。
  8. 多因素认证(MFA):支持将电话注册为第二因素(multiFactor(user).enroll),并在登录时通过 getMultiFactorResolver 处理 MFA 流程。
  9. 受保护路由:提供 Next.js 中间件保护与会话 Cookie 校验,以及客户端 ProtectedRoute 路由守卫示例。
  10. 错误处理:内置 getAuthErrorMessage 工具,覆盖 auth/invalid-credential、auth/popup-blocked、auth/requires-recent-login 等常见错误的友好提示。

使用方式

快速开始分三步:在 Firebase Console > Authentication > Sign-in method 中启用认证提供商;在客户端使用 initializeApp 与 getAuth 初始化 Firebase Auth;在服务端使用 firebase-admin/app 的 initializeApp 与 cert 初始化 Admin SDK,并通过 getAuth 获取 adminAuth。所有代码示例均以 TypeScript 形式给出,涵盖上述各能力的调用方式。

适用场景

适用于需要在 Web 应用(示例以 Next.js 为主)中快速接入邮箱密码、第三方登录、电话认证、多因素认证与基于角色的权限控制的场景。也适用于需要服务端校验令牌、实现会话管理与受保护路由的服务端渲染应用。

限制

自定义 Claims 会缓存在 ID Token 中,设置后用户需重新登录或强制刷新令牌(getIdTokenResult(true))才能获取最新 Claims。电话认证需要配置 reCAPTCHA。部分敏感操作(如改密、删除账户)需要用户最近重新登录(auth/requires-recent-login)。资料未提供收费、价格与具体平台支持范围的说明。

已知问题预防

资料称该技能可预防 12 个已记录的 Firebase Auth 错误,其中列举了 #1 auth/invalid-credential、#2 auth/popup-blocked、#3 auth/requires-recent-login 与 #4 自定义 Claims 不更新等问题及规避方式。