useAuthState()是使用cookie还是每次请求Firebase?内部运行机制是什么
react-firebase-hooks/auth 中useAuthState() 运行原理解答 核心底层逻辑说明
useAuthState() 是对Firebase官方Auth Web SDK的轻量封装,本身不实现认证逻辑,仅将Firebase SDK内部的认证状态同步到React组件中,所有存储、请求、身份校验逻辑都由Firebase官方SDK完成。
1. 存储&请求规则
- 它不会使用cookies存储认证信息,Firebase Auth默认将凭证存储在浏览器IndexedDB中,兼容性降级场景会使用localStorage。
- 不会每次调用hook都发起服务端请求,仅两类场景会触发服务端调用:
- 页面首次加载、SDK初始化时,会读取本地存储的刷新凭证校验有效性,同步最新的用户状态
- 本地身份凭证(ID token,默认1小时有效期)过期时,自动触发静默续期请求
2. 身份识别参数逻辑
- 向Firebase发起的凭证校验、续期请求中,不会明文传递uid、邮箱这类用户属性,核心传递的是本地存储的refresh token(刷新令牌),服务端通过刷新令牌即可匹配到对应用户账号,返回对应的uid、用户资料等信息。
- 你提到的网络请求截图中携带的uid,属于服务端返回的结果字段,不是请求发送的参数。
3. UID的存储位置
用户首次登录成功、或首次凭证校验完成后,Firebase SDK会将完整用户信息(包含uid、邮箱等)、ID token、refresh token全部存储在浏览器的IndexedDB中,默认存储键名为firebase:authUser:[你的Firebase项目API_KEY]:[认证提供方标识]。
只要用户没有主动登出、或清除浏览器本地存储,这些信息会长期留存,下次打开页面时SDK会优先读取本地存储的用户信息做首次渲染,同时后台静默校验凭证有效性。
内容的提问来源于stack exchange,提问作者Suraksh NS
相关产品推荐
相关产品推荐

