如何加载以前登录的用户?

Posted

技术标签:

【中文标题】如何加载以前登录的用户?【英文标题】:How can I load the previous signed in user? 【发布时间】:2021-05-02 00:28:02 【问题描述】:

在我的应用程序中,我碰巧有两种类型的用户,医院和患者,它们都配置为使用相同的 firebase 身份验证。我想知道的是,如何根据他们之前的登录方式为各个用户加载页面?例如,如果一家医院已登录但未注销,则当他们运行该应用程序时,它应该显示医院的仪表板而不是患者的仪表板。我该如何配置?

【问题讨论】:

【参考方案1】:

shared_prefs 支持 Flutter web。保存一个说明帐户类型的值。

看到这个答案: https://***.com/a/59579821/13714686

SharedPreferences prefs = await SharedPreferences.getInstance();
bool isHospital = (prefs.getBool('isHospitalAccount');
if(isHospital == true)
 //hospital navigation 

else
  //patient navigation 

【讨论】:

【参考方案2】:

首先,您需要检查用户是否已登录。为此,您可以通过以下代码进行检查。

class MyApp extends StatelessWidget

    @override
    Widget build(BuildContext context)
        return FutureBuilder<FirebaseUser>(
            future: FirebaseAuth.instance.currentUser(),
            builder: (BuildContext context, AsyncSnapshot<FirebaseUser> snapshot)
                       if (snapshot.hasData)
                           FirebaseUser user = snapshot.data; // this is your user 

                           /// is because there is a user already logged, So route them to a Screen of Dashboard directly.
                           
                           return MainScreen();
                        
                         /// other way there is no user logged.
                         return LoginScreen();
             
          );
    

现在,您需要在 FireStore 中维护一个用户列表,其中将存储用户的元数据,例如上次登录、用户类型信息。使用此信息,您可以相应地路由用户。

【讨论】:

以上是关于如何加载以前登录的用户?的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC:如何在每个 Thymeleaf 页面上重新加载数据库中的登录用户信息?

我如何在登录 asp.net core razor 之前显示加载图标或禁用按钮

在用户登录时,检查具有相同网站的其他标签并重新加载这些标签

绿色加载屏幕后登录 Google Play 消失。如何解决?

App嵌套H5,app登录后重新加载h5,就是在h5的url上拼接用户token,H5如何取token

ASP.NET 应用程序 - Webfonts 在用户登录到站点之前不会加载