首页 > 解决方案 > 将 Firebase 身份验证限制为会话

问题描述

我正在尝试在用户登录时实现“保持登录”复选框。如果选中该复选框,则用户应保持登录状态,直到他们明确退出。如果未选中,则用户应仅在关闭应用程序之前保持登录状态。

Flutter Firebase 身份验证包没有配置身份验证持续时间的方法,或者至少我没有找到方法。

我尝试使用 WidgetsBindingObserver 的 didChangeAppLifecycleState(..) 方法的 AppLifecycleState.detached 状态来监听应用何时关闭。我可以看到调用了 signOut() 方法,但尽管如此,用户在下次启动应用程序时仍保持登录状态。鉴于该应用程序正在退出,我并不感到惊讶。

@override
void didChangeAppLifecycleState(AppLifecycleState state) {
  if( state == AppLifecycleState.detached ){
    FirebaseAuth.instance.signOut();
  }
}

我错过了任何好的选择吗?

标签: firebaseflutterfirebase-authentication

解决方案


默认情况下,Firebase 身份验证 SDK 将身份验证状态保存到本地存储,然后在应用重新启动时从那里恢复。

如果您希望状态不被持久化,您可以在应用程序启动时通过调用进行配置:

await FirebaseAuth.instance.setPersistence(Persistence.NONE);

另请参阅有关持久身份验证状态的 FlutterFire 文档。


推荐阅读