【发布时间】: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。那么,这整个过程是正确的吗?
- 设置 iOS、Firebase Auth、MySQL
- 当用户注册时,电子邮件地址(可能还有用户 ID)将被发送到 Firebase Auth 和 MySQL。但密码只会发送到 Firebase。
- 在登录期间,如果用户设置并保存首选项,则 iOS 会将数据发布到 MySQL 中“用户”表中的“用户 ID”行。
- 当用户再次登录时,iOS 将从 Firebase Auth 获取令牌并发送到 MySQL。
- 令牌将用于通过比较解密的令牌和 MySQL 的公共密钥来验证用户。
- 如果验证通过,则 MySQL 会将用户的其他属性发送到 iOS。
- iOS 将获取用户的属性数据。
这是我构建此功能的第一次体验。
请回复我的问题!
提前谢谢!
【问题讨论】:
-
但是,Firebase Auth 只能保存基本属性是不正确的,因为您可以轻松地将更多用户数据存储在 /users/uid 节点中。基本上只要你想要,一旦用户验证,只需读取该节点。可能根本没有理由使用其他数据库 - 在 Firebase 实时数据库和 Firestore 之间,您有很多选择。
标签: ios mysql swift firebase firebase-authentication