React Native 中 Firebase auth() 用户会话在iOS和Android的存储位置是什么?
React Native Firebase Auth 会话存储说明
以下内容针对官方推荐的@react-native-firebase/auth(原生封装版Firebase SDK):
注意:如果你在React Native中使用Web版Firebase JS SDK,会话默认会存储在AsyncStorage中,无系统级加密,安全性更低,不推荐生产环境使用。
Firebase Auth的用户会话默认由原生SDK层实现持久化存储,不需要开发者手动处理存储逻辑,所有敏感认证数据都经过加密存储,不会明文暴露。
iOS 平台存储规则
- 存储位置:用户会话默认存储在系统*钥匙串(Keychain)*中,属于系统级加密存储区域。如果没有开启跨设备iCloud钥匙串同步,应用卸载时对应会话数据会同步清除。
- 存储内容:加密保存用户的刷新令牌(refresh token)、ID令牌(ID token)、用户UID等核心认证信息,所有数据默认仅当前应用可读取,开启钥匙串共享权限后可实现同开发者账号下关联应用的会话互通。
- 有效性:存储的会话在应用重启、系统重启后都可以正常读取,仅当用户主动调用
auth().signOut()、手动卸载应用时才会失效。
Android 平台存储规则
- 存储位置:用户会话默认存储在基于Jetpack Security加密的EncryptedSharedPreferences中,文件路径为
/data/data/[应用包名]/shared_prefs/com.google.firebase.auth.api.Store.xml,所有内容经过AES-256加密,无Root权限无法直接读取明文。 - 存储内容:同iOS一致,加密保存刷新令牌、ID令牌、用户UID等认证敏感数据,仅当前应用可读取。
- 有效性:应用卸载时对应存储文件会同步删除,会话失效;应用重启、系统重启不会影响会话有效性,仅主动调用
auth().signOut()会清除存储的会话数据。
手动控制会话持久化
你可以通过JS层API主动修改会话持久化策略:
- 调用
auth().setPersistence()修改存储策略,支持三个可选值:firebase.auth.Auth.Persistence.LOCAL:默认值,持久化存储直到用户主动登出firebase.auth.Auth.Persistence.SESSION:仅在当前应用进程生命周期内存活,应用被杀后会话自动清除firebase.auth.Auth.Persistence.NONE:仅内存存储,页面切换/Activity重启后会话自动清除
- 主动清除所有会话数据直接调用
auth().signOut()即可,底层会自动删除双平台存储的所有认证相关内容。
内容的提问来源于stack exchange,提问作者Nyway
相关产品推荐
相关产品推荐

