在 Flutter 中使用相同的 Firebase 将用户和卖家分开

Posted

技术标签:

【中文标题】在 Flutter 中使用相同的 Firebase 将用户和卖家分开【英文标题】:Separate Users and Sellers in the same app with same Firebase in Flutter 【发布时间】:2021-06-23 14:31:18 【问题描述】:

希望你一切都好

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

然后根据auth状态添加主屏幕或登录屏幕,但它是一般的auth状态。我如何让它根据登录用户的类型显示不同的主屏幕。所以我知道为什么它会把我带到用户主页——我设置它这样做,我将如何让它把我带到一个或另一个

谢谢

【问题讨论】:

【参考方案1】:

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

您可以将用户类型作为custom claim 存储在用户的个人资料中,或者存储在云托管的数据库中。无论哪种情况,您都应该在安全的环境中执行此操作,以便用户无法更改其类型(除非您的用例特别希望他们能够更改)。

这样一来,您的应用就会在启动时采取以下步骤:

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

另见:

How to create two types of users(Client , Freelancer. for example) while Auth using firebase in a flutter app? 的链接 How to create 2 different User group in Firebase AUTH with Flutter 更多搜索结果来自[firebase-authentication] two types of users

【讨论】:

非常感谢您。这很有帮助【参考方案2】:

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

【讨论】:

【参考方案3】:

请发布您用于此途径的代码。 我建议您创建一个名为 userRole 的属性,并在创建用户时存储它。 当您在成功验证后将他们的姓名、图片和电子邮件发送到 Firebase 时,将这些信息与他们的 userRole 一起存储。

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

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

【讨论】:

以上是关于在 Flutter 中使用相同的 Firebase 将用户和卖家分开的主要内容,如果未能解决你的问题,请参考以下文章

使用flutter如何在同一个App中使用多个firebase实时数据库

在 Flutter 中使用 Firebase 电话身份验证超时后使 OTP 无效

无法使用 Flutter Mobile 上传到 Firebase 存储

如何在颤振应用程序中使用相同的 Firebase 匿名用户

Firebase_messaging onResume 和 onLaunch 回调不会在 Flutter 中调用

Flutter Firebase Google Apple Facebook 登录