firebase - 将 Firebase 身份验证限制为会话
问题描述
我正在尝试在用户登录时实现“保持登录”复选框。如果选中该复选框,则用户应保持登录状态,直到他们明确退出。如果未选中,则用户应仅在关闭应用程序之前保持登录状态。
Flutter Firebase 身份验证包没有配置身份验证持续时间的方法,或者至少我没有找到方法。
我尝试使用 WidgetsBindingObserver 的 didChangeAppLifecycleState(..) 方法的 AppLifecycleState.detached 状态来监听应用何时关闭。我可以看到调用了 signOut() 方法,但尽管如此,用户在下次启动应用程序时仍保持登录状态。鉴于该应用程序正在退出,我并不感到惊讶。
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if( state == AppLifecycleState.detached ){
FirebaseAuth.instance.signOut();
}
}
我错过了任何好的选择吗?
解决方案
默认情况下,Firebase 身份验证 SDK 将身份验证状态保存到本地存储,然后在应用重新启动时从那里恢复。
如果您希望状态不被持久化,您可以在应用程序启动时通过调用进行配置:
await FirebaseAuth.instance.setPersistence(Persistence.NONE);
另请参阅有关持久身份验证状态的 FlutterFire 文档。
推荐阅读
- python - Pandas:如何在系列单元格中搜索部分字符串匹配?
- javascript - 如何在线使用 Python OpenCV VideoCapture?
- elasticsearch - 如何将整个 XML 数据库摄取到 Elastic Search?
- java - 是否值得创建另一种方法来简化重复的方法?
- c# - 如何在 C# 中转换 pdf 或 jpg 中的字节
- java - 多个用户输入整数的 While 循环
- c++ - 需要关于 c++ hangman for loop 的帮助以确定猜测字符是否在神秘单词字符串中
- vb.net - VB.NET 和 IME KeyUp 事件
- javascript - 如何在谷歌堆积条形图上显示多个工具提示
- c - 如果输入特定值,如何退出 scanf 函数?