Flutter Web和Firebase身份验证:如何重定向Flutter Web中未登录的用户



我正在使用Flutter web和Firebase开发一个web应用程序。

我必须处理Firebase登录。

假设我们有两个屏幕,我想实现的情况如下:

如果用户未登录:

  • 重定向登录页面上的用户

如果用户未登录:

  • 如果他登录了登录页面,请在主页上重定向他

我已经实现了一个功能,该功能检查firebase中的当前用户,其作用如下:

void checkAuthentication() {
var url = window.location.href;
var navigationService = locator<NavigationService>();
var loggedIn = this.isUserLoggedIn();
if (!loggedIn) {
navigationService.replaceWith(Routes.login);
} else {
if (url.contains("Login")) {
navigationService.replaceWith(Routes.homepage);
}
}

}

导航服务是我从堆叠的软件包中获得的服务(https://pub.dev/packages/stacked)。

这个解决方案有效,但有两个问题:

  • 这不是正确的方法。我不可能在每个屏幕页面上都调用这个
  • 当你被重定向时,你可以看到一个带有新页面的转换

我的问题:在Flutter Web中,您将如何在代码中的一个独特点中管理这一点?有没有更好的方法来实现与我在这里展示的不同?

如果你有时间,请查看网络忍者Flutter/Firebase教程中的前几段视频,这些视频将介绍基本身份验证。我是Flutter的新手,所以我会尽我所能解释他是如何做到的,而不必详细说明:

他有一个文件wrapper.dart,该文件使用一个自定义用户对象,该对象不断地流式传输身份验证状态。包装器根据身份验证状态决定用户应该导航到哪里。

Widget build(BuildContext context) {
final user = Provider.of<User>(context);
print(user);
// return either home or authenticate
if (user == null) {
return Authenticate();
} else {
return Home();
}
}

我在我的项目中使用了这段代码,它运行得很好。

相关内容

  • 没有找到相关文章

最新更新