在 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 存储