【问题标题】:Verifying User's current state in Authentication Flow在身份验证流程中验证用户的当前状态
【发布时间】:2020-11-15 16:21:42
【问题描述】:

我正在努力创建身份验证流程,但无法决定哪种方式更好

这就是我的流程:

Splash Screen
     ||
     \/
Sign Up with Email & Password (Using Firebase)
     ||
     \/
Fill Name, Phone, and Upload Profile Image
     ||
     \/
Waiting Page (Wait for Admin Approval)
     ||
     \/
Home Page

我想要实现的是: 如果用户注册但没有填写姓名/电话/图片部分,当他重新登录后重新安装或注销后,他将自动被重定向到填写姓名/电话/图片页面, 如果用户填写了信息但管理员未验证,则将他发送到等待页面 如果用户填写和信息并且也已通过管理员验证,则将他发送到主页

现在我在两个选项之间摇摆不定:

  1. 使用 redux 持久化并在 Auth 中保存用户状态

  2. 使用 Firebase 实时数据库为每个注册用户提供 isFilled 和 isValid 属性,如下所示:

{
  "users": {
    "user1": {
      "name": "Ada Lovelace",
      "isFilled": false,
      "isValid": false,

    },
    "user2": { ... },
    "user3": { ... }
  }
}

然后进行相应的重定向

所以我的问题是 1 或 2 哪种方式更好? 或者,如果有更好的方法来实现这一点,我很想听听 :)

【问题讨论】:

  • 您想检查您在后端拥有的数据是否有效?或者您想检查它是否已填写并有效,例如作为电子邮件?
  • 哪个更好

标签: firebase react-native firebase-realtime-database react-redux


【解决方案1】:

选项 2 将是首选。

您曾考虑在 redux-persist 中本地缓存状态,但问题是用户卸载和安装应用程序并丢失用户状态。

另一种可能性是用户从一部手机安装和创建帐户并使用另一部手机登录,因此在这种情况下,您必须访问 firebase 数据以验证用户的状态。

当管理员批准后,您可以考虑通过 Firebase 通知来通知应用,当用户打开应用时,您可以轻松重定向到主屏幕。

您可以在登录后使用 redux-persist 并存储元数据,这将有助于应用快速加载,而无需依赖来自后端的数据。

【讨论】:

  • 选项 2 的问题是我需要检查每个页面中的当前用户,这似乎不是最佳做法
  • 没错,你可以在 redux 中维护当前用户,但是如果用户使用不同的手机登录,你将不得不考虑管理这样的场景。由于这是您创建用户的一部分,因此调用 api 不会产生很大影响
猜你喜欢
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2020-07-06
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 2012-01-25
  • 2017-09-09
相关资源
最近更新 更多