【问题标题】:How to sync Firebase Auth with MySQL DB via iOS(swift)?如何通过 iOS(swift)将 Firebase Auth 与 MySQL DB 同步?
【发布时间】:2019-07-09 06:42:58
【问题描述】:

我正在 iOS 应用中构建注册/登录/保存功能。

对于注册/登录,我选择“Firebase 身份验证”。
但是,Firebase Auth 只能保存基本属性(例如电子邮件地址、密码、URL 等)
所以,为了保存用户的其他属性,我打算单独使用额外的MySQL DB。(通过制作用户DB、用户表、用户ID主键和其他列)

为了与 Firebase Auth 和 MySQL 进行通信,我发现用户验证是必须的。
JWT(Json Web Token)将用于验证。

但是,要使用 JWT 验证用户,我认为 Firebase Auth 和 MySQL 都必须事先有共同的密钥(如 userID、E-Mail 地址等)。

但我不确定这是否是常用的方法(简单且安全)。

我已经阅读了多个线程,

Securely store Android Firebase Auth users in a MySQL database
Can i build an Android app that uses Firebase authentication but a custom database(eg MySQL)
Firebase, how to use auth service with a node.js RESTapi backend

但我无法迈出这个过程的第一步。

我现在有问题。



问题1。到目前为止,我的理解是正确的?

问题2。要在“注册”步骤验证用户,我是否需要提前在 Firebase Auth 和 MySQL 中存储一个公用密钥?

问题 2-1-1。 (如果是)在 Firebase Auth 和 MySQL 中拥有相同的数据会不会是一个安全问题? (当然,我不能在 MySQL 中保存任何其他私人数据(密码、电话号码等))

问题 2-1-2。 (如果是)您认为公共密钥的最佳数据是什么? (用户 ID、电子邮件地址、自动递增的用户 ID 等)

问题 2-2。 (如果没有)如何通过 iOS 同步 Firebase 和 MySQL?

问题3。那么,这整个过程是正确的吗?

  1. 设置 iOS、Firebase Auth、MySQL
  2. 当用户注册时,电子邮件地址(可能还有用户 ID)将被发送到 Firebase Auth 和 MySQL。但密码只会发送到 Firebase。
  3. 在登录期间,如果用户设置并保存首选项,则 iOS 会将数据发布到 MySQL 中“用户”表中的“用户 ID”行。
  4. 当用户再次登录时,iOS 将从 Firebase Auth 获取令牌并发送到 MySQL。
  5. 令牌将用于通过比较解密的令牌和 MySQL 的公共密钥来验证用户。
  6. 如果验证通过,则 MySQL 会将用户的其他属性发送到 iOS。
  7. iOS 将获取用户的属性数据。



这是我构建此功能的第一次体验。
请回复我的问题!
提前谢谢!



【问题讨论】:

  • 但是,Firebase Auth 只能保存基本属性是不正确的,因为您可以轻松地将更多用户数据存储在 /users/uid 节点中。基本上只要你想要,一旦用户验证,只需读取该节点。可能根本没有理由使用其他数据库 - 在 Firebase 实时数据库和 Firestore 之间,您有很多选择。

标签: ios mysql swift firebase firebase-authentication


【解决方案1】:

不,您不需要预先存储公共密钥。

当用户登录时,您将在您的客户端(iOS 设备)上获得一个 JWT。然后,您将将此 JWT 附加到对您服务器的每个请求的标头中。然后在您的服务器上,您将使用此 JWT 向 Firebase 进行身份验证,如果成功,它将返回您一个用户 ID。并且您可以将其存储在您的数据库中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2017-12-31
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多