将Firebase身份验证限制为会话
我试图在用户登录时实现一个“让我登录”复选框。如果选中该复选框,则用户应保持登录状态,直到他们明确注销。如果未选中,则用户应在关闭应用程序之前保持登录状态 Flatter Firebase身份验证包没有配置身份验证持续时间的方法,或者至少我没有找到方法 我已尝试使用WidgetsBindingObserver的didChangeAppLifecycleState(..)方法的AppLifecycleState.detached状态来侦听应用程序何时关闭。我可以看到调用的signOut()方法,但尽管如此,用户在下次启动应用程序时仍然保持签名状态。我并不惊讶,因为该应用程序正在退出中。将Firebase身份验证限制为会话,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,我试图在用户登录时实现一个“让我登录”复选框。如果选中该复选框,则用户应保持登录状态,直到他们明确注销。如果未选中,则用户应在关闭应用程序之前保持登录状态 Flatter Firebase身份验证包没有配置身份验证持续时间的方法,或者至少我没有找到方法 我已尝试使用WidgetsBindingObserver的didChangeAppLifecycleState(..)方法的AppLifecycleState.detached状态来侦听应用程序何时关闭。我可以看到调用的signOut()方法,但
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if( state == AppLifecycleState.detached ){
FirebaseAuth.instance.signOut();
}
}
我是否缺少任何好的选项?这是因为signOut()返回一个未来。所以你必须等待它。因此,假设您有一个函数userSignOut
Future<void> userSignOut() => FirebaseAuth.instance.signOut();
这应该能解决你的问题。如果仍然不起作用,请提供更多相关代码。默认情况下,Firebase身份验证SDK将身份验证状态保留到本地存储,然后在应用程序重新启动时从本地存储恢复身份验证状态 如果希望状态不被持久化,则可以通过调用以下命令来配置应用程序启动时的状态:
await FirebaseAuth.instance.setPersistence(Persistence.NONE);
另请参见。上的颤振火文档。值得注意的是,setPersistence(..)仅在web上受支持。来自文档:“在本机平台上,将抛出未实现的错误”
await FirebaseAuth.instance.setPersistence(Persistence.NONE);