SwiftUI接入Firebase实现登录:当前用户登录状态是否会持久化?
问题解答
重启模拟器后仍检测到已登录用户属于正常现象,Firebase Auth默认会持久化保存用户登录状态。
Firebase登录状态持久化规则
- Firebase Auth SDK在iOS平台默认开启登录状态持久化能力,用户登录成功后,凭证会被加密存储到系统钥匙串中
- 钥匙串存储的内容不会因为App重启、模拟器重启、甚至设备重启被清除,只有以下几种情况会清空登录状态:
- 主动调用
Auth.auth().signOut()方法登出 - 卸载重装App
- 重置模拟器所有内容和设置
- 登录凭证过期失效(比如用户在其他端修改了密码、禁用了账号等)
- 主动调用
代码逻辑说明
你当前的实现逻辑符合官方推荐规范:
- 直接通过
Auth.auth().currentUser是否为非空判断登录状态是正确的,SDK会自动读取本地持久化的凭证,无需自行实现本地存储逻辑 - 如果你需要测试未登录场景,只需要调用登出方法即可,示例代码如下:
func signOut() { do { try Auth.auth().signOut() signedIn = false } catch let signOutError as NSError { print("登出错误: %@", signOutError) } }
内容的提问来源于stack exchange,提问作者mdav132
相关产品推荐
相关产品推荐

