在同一个应用程序中使用相同的Firebase将用户和卖家分开

在同一个应用程序中使用相同的Firebase将用户和卖家分开,firebase,flutter,dart,firebase-authentication,Firebase,Flutter,Dart,Firebase Authentication,希望你身体健康 我正在尝试制作一个应用程序,从同一个应用程序中,你可以是用户,也可以是卖家。在我们的例子中,卖家将是一家餐厅,而用户将是一名餐厅游客。我的问题是,如果我登录“我是一个餐馆登录名”,而不是用户登录名。重新启动应用程序时,自动登录并将用户带到用户主页,而不是卖家主页,因为我正在使用 auth.currentUser!=空? 然后根据身份验证状态添加主屏幕或登录屏幕,但这是一种通用身份验证状态。如何根据登录用户的类型使其显示不同的主屏幕。所以我知道为什么它会把我带到用户主页——我设置了

希望你身体健康

我正在尝试制作一个应用程序,从同一个应用程序中,你可以是用户,也可以是卖家。在我们的例子中,卖家将是一家餐厅,而用户将是一名餐厅游客。我的问题是,如果我登录“我是一个餐馆登录名”,而不是用户登录名。重新启动应用程序时,自动登录并将用户带到用户主页,而不是卖家主页,因为我正在使用
auth.currentUser!=空?

然后根据身份验证状态添加主屏幕或登录屏幕,但这是一种通用身份验证状态。如何根据登录用户的类型使其显示不同的主屏幕。所以我知道为什么它会把我带到用户主页——我设置了它,我如何让它把我带到其中一个


谢谢

请发布您用于此路径的代码。 我建议您创建一个名为userRole的属性,并在创建用户时存储该属性。 当您在成功身份验证后向Firebase发送他们的姓名、图像和电子邮件时,请将这些信息存储在他们的用户角色中

在小部件树中,我假设您有两个小部件,CustomerHome()和RestarauntHome()。现在,成功登录后,将用户信息传递到此小部件,并检查:
user.userRole=='restarunt'?RestarauntHome():CustomerHome()


这样,当他们返回应用程序时,他们不允许看到的页面将不会显示。

请发布您用于此路径的代码。 我建议您创建一个名为userRole的属性,并在创建用户时存储该属性。 当您在成功身份验证后向Firebase发送他们的姓名、图像和电子邮件时,请将这些信息存储在他们的用户角色中

在小部件树中,我假设您有两个小部件,CustomerHome()和RestarauntHome()。现在,成功登录后,将用户信息传递到此小部件,并检查:
user.userRole=='restarunt'?RestarauntHome():CustomerHome()


这样,当他们返回应用程序时,他们不允许看到的页面将不会显示。

假设您使用firestore数据库管理用户数据,您可以在用户集合的文档中添加一个角色字段,其值可以是user或seller。当新用户/卖家注册时写入此字段。然后在主页中,当值为seller时返回seller homepage,否则返回用户主页。提取文档时,您可以返回加载屏幕。

假设您使用firestore数据库管理用户数据,则可以在用户集合的文档中添加一个角色字段,其值可以是user或seller。当新用户/卖家注册时写入此字段。然后在主页中,当值为seller时返回seller homepage,否则返回用户主页。获取文档时,您可以返回加载屏幕。

Firebase身份验证没有基于用户类型的概念,因此您必须自己构建

您可以将用户类型存储在用户配置文件中,作为一个数据库,或存储在云托管数据库中。在任何一种情况下,您都应该在一个安全的环境中这样做,以便用户不能更改其类型(除非您的用例特别希望他们能够更改)

因此,当应用程序启动时,您的应用程序将执行以下步骤:

  • 登录用户,或恢复其身份验证状态
  • 确定其类型
  • 将它们重定向到正确的屏幕
  • 另见:

    • 链接
    • 更多搜索结果

    Firebase身份验证没有基于用户类型的概念,因此您必须在自己的基础上进行构建

    您可以将用户类型存储在用户配置文件中,作为一个数据库,或存储在云托管数据库中。在任何一种情况下,您都应该在一个安全的环境中这样做,以便用户不能更改其类型(除非您的用例特别希望他们能够更改)

    因此,当应用程序启动时,您的应用程序将执行以下步骤:

  • 登录用户,或恢复其身份验证状态
  • 确定其类型
  • 将它们重定向到正确的屏幕
  • 另见:

    • 链接
    • 更多搜索结果

    太棒了,非常感谢。这很有帮助,非常感谢。这很有帮助