基于身份验证状态的 Flutter Navigation

     2023-02-23     138

关键词:

【中文标题】基于身份验证状态的 Flutter Navigation【英文标题】:Flutter Navigation based on auth state 【发布时间】:2019-12-05 01:08:18 【问题描述】:

我正在构建一个带有用户身份验证的 Flutter 应用程序(firebase 等等),并希望为经过身份验证和未经身份验证的用户提供两组路由:

未经身份验证的用户: /登录 /登记 ...

经过身份验证的用户: /家 ...

我试图在顶部小部件上有一个类似这样的开关:

 switch(_user.status) 
        case UserStatus.Unauthenticated:
       return MaterialApp(
                      title: _title,
                        theme: _themeData,
                        routes: ....
                        initialRoute: "/login",
                      );
        case UserStatus.Authenticated:
       return MaterialApp(
                      title: _title,
                        theme: _themeData,
                        onGenerateRoute: _generateRoute,
                        initialRoute: "/",
                      );

(我在树的顶部得到了 _user 值和 ChangeNotifierProvider)但显然不可能有 2 个***导航器。

其次,我尝试在_generateRoute 函数中按下开关,但有一些缓存:当树重建时(例如当_user.status 更改时)_generateRoute 函数不会再次调用,所以不会不行。

你是怎么解决这个问题的?

【问题讨论】:

【参考方案1】:

您可以为此使用三元运算符:

MaterialApp(
  title: _title,
  theme: _themeData,
  routes: ....
  initialRoute: _user.status == UserStatus.Unauthenticated ? "/login" : "",
);

【讨论】:

不幸的是,这不起作用:当用户被认证时,应用程序小部件被重建但不是 MaterialApp 小部件,并且 LoginPage 仍然出现...... :-(

使用基于 Web 的 Flutter 应用程序进行身份验证

】使用基于Web的Flutter应用程序进行身份验证【英文标题】:Authenticationwithwebbasedflutterapp【发布时间】:2020-05-0412:12:06【问题描述】:我想构建一个Flutter应用程序,人们可以在其中登录并发布内容供其他用户查看。我希望这个应... 查看详情

在 Flutter 中使用 FirebaseAuth 检查用户的身份验证状态

】在Flutter中使用FirebaseAuth检查用户的身份验证状态【英文标题】:checkauthenticationstateofUserusingFirebaseAuthinFlutter【发布时间】:2020-12-1911:34:04【问题描述】:我知道存在这样的问题,但其中充满了过时和不正确的答案。新的FlutterFi... 查看详情

在 Flutter 中使用 StreamProvider 4.0.1 从 Firebase 监控身份验证状态

】在Flutter中使用StreamProvider4.0.1从Firebase监控身份验证状态【英文标题】:MonitorAuthStatusfromFirebaseusingStreamProvider4.0.1inFlutter【发布时间】:2020-04-2902:52:22【问题描述】:如果用户没有明确退出应用程序,我会尝试自动登录。我正在... 查看详情

我是 Flutter Web 的新手,如何使用 Firebase 电话身份验证对用户进行身份验证,有没有办法让用户保持登录状态?

】我是FlutterWeb的新手,如何使用Firebase电话身份验证对用户进行身份验证,有没有办法让用户保持登录状态?【英文标题】:Iamnewtoflutterweb,howtoauthenticateusersusingfirebasephoneauthentication,isthereawaytokeepuserloggedin?【发布时间】:2021-05-22... 查看详情

使用流在 Flutter 中不起作用检查身份验证状态

】使用流在Flutter中不起作用检查身份验证状态【英文标题】:CheckauthenticationstateusingstreamnotworkinginFlutter【发布时间】:2021-07-1215:43:11【问题描述】:我正在使用GoogleSignIn。在我的初始屏幕上,我使用StreamBuilder检查用户是否已登... 查看详情

Flutter web 无密码登录不会触发身份验证状态更改

】Flutterweb无密码登录不会触发身份验证状态更改【英文标题】:Flutterwebpasswordlesslogindoesnottriggerauthstatechange【发布时间】:2020-06-1116:27:07【问题描述】:我正在尝试在FlutterWeb应用程序中实现无密码登录。我使用了StreamBuilder小部... 查看详情

Django 基于状态的多重身份验证后端

】Django基于状态的多重身份验证后端【英文标题】:DjangoMultipleAuthenticationBackendsBasedOnStatus【发布时间】:2013-04-1312:46:41【问题描述】:我想知道如何根据用户是否被标记为员工来告诉Django使用哪个身份验证后端。这个可以吗?... 查看详情

使用 Flutter ChangeNotifierProvider 进行身份验证

】使用FlutterChangeNotifierProvider进行身份验证【英文标题】:UsingFlutterChangeNotifierProviderforauthentication【发布时间】:2020-12-2312:57:18【问题描述】:我正在使用ChangeNotifierProvider来处理我的Flutter应用的应用状态。我的main.dart文件import\'... 查看详情

保持 React 基于 Cookie 的身份验证状态

】保持React基于Cookie的身份验证状态【英文标题】:PersistReactCookie-basedAuthenticationstate【发布时间】:2020-09-1604:17:18【问题描述】:我正在使用React-Router和Redux构建身份验证流程,其中我的后端以会话Cookie(带有Set-CookieHTTP标头)... 查看详情

使用提供程序在 Flutter 中进行 Firebase 电话身份验证 [关闭]

】使用提供程序在Flutter中进行Firebase电话身份验证[关闭]【英文标题】:FirebasePhoneAuthenticationinFlutterusingProvider[closed]【发布时间】:2020-04-2500:26:18【问题描述】:我刚刚找到了一个状态管理提供商,我很想知道如何使用Provider实... 查看详情

Laravel 4:基于身份验证状态的单个 URI 的两个不同视图页面

】Laravel4:基于身份验证状态的单个URI的两个不同视图页面【英文标题】:Laravel4:TwodifferentviewpagesforasingleURIbasedonauthstatus【发布时间】:2013-08-0513:35:43【问题描述】:我最近开始使用Laravel4进行开发,我有一个关于路线的问题。... 查看详情

在基于 OAuth2 的身份验证中,状态参数可以防止啥样的 CSRF 攻击?

】在基于OAuth2的身份验证中,状态参数可以防止啥样的CSRF攻击?【英文标题】:WhatkindofCSRFattackdoesstateparameterpreventinOAuth2-basedauthentication?在基于OAuth2的身份验证中,状态参数可以防止什么样的CSRF攻击?【发布时间】:2020-03-0810:4... 查看详情

使用 Flutter BLoC 模式跟踪多个状态

】使用FlutterBLoC模式跟踪多个状态【英文标题】:KeepingtrackofmultiplestateswithFlutterBLoCpattern【发布时间】:2021-02-2801:38:21【问题描述】:我正在尝试使用BLoC模式制作身份验证屏幕,但即使在阅读了flutter_bloc库的文档并阅读了多个实... 查看详情

基于token的身份验证

最近了解下基于Token的身份验证,跟大伙分享下。很多大型网站也都在用,比如 Facebook,Twitter,Google+,Github等等,比起传统的身份验证方法,Token扩展性更强,也更安全点,非常适合用在Web应用或者移动应用上。Token的中文... 查看详情

如何结合单点注销和无状态身份验证

...布时间】:2015-10-2712:05:04【问题描述】:我正在尝试添加基于SAML的单点登录/单点注销解决方案,以允许基于Web的应用程序的混合生态系统,从而给最终用户留下他们正在与单个应用程序交互的印象。对此的标准方法似乎是让IdP... 查看详情

Flutter Web 和 Firebase 身份验证 TypeError:无法读取未定义的属性“应用程序”

】FlutterWeb和Firebase身份验证TypeError:无法读取未定义的属性“应用程序”【英文标题】:FlutterwebandFirebaseauthenticationTypeError:Cannotreadproperty\'app\'ofundefined【发布时间】:2020-08-2604:43:43【问题描述】:有人可以帮帮我吗?我尝试使用... 查看详情

用于 Flutter 桌面嵌入的 Firebase 身份验证插件

】用于Flutter桌面嵌入的Firebase身份验证插件【英文标题】:FirebaseAuthenticationpluginforFlutterDesktopEmbedding【发布时间】:2019-10-2515:41:11【问题描述】:我正在尝试为Flutter桌面嵌入集成Firebase身份验证。如果桌面嵌入,是否有任何用于... 查看详情

使用jwt进行基于token的身份验证方法(代码片段)

一般weby应用服务都使用有状态的session来存储用户状态以便认证有权限的用户进行的操作。但服务器在做横向扩展时,这种有状态的session解决方案就受到了限制。所以在一些通常的大型web应用场景越来越多在采用没有状态的token... 查看详情