我正在 iOS 应用中构建注册/登录/保存功能。
对于注册/登录,我选择“Firebase Auth”。
但是,Firebase Auth 只能保存基本属性(例如电子邮件地址、密码、URL 等)
所以,为了保存用户的其他属性,我打算单独使用额外的MySQL DB。(通过制作用户数据库,用户表,用户ID主键和其他列)
要和Firebase Auth和MySQL通信,我发现用户验证是必须的。
并且JWT(Json Web Token)将用于验证。
但是,要使用 JWT 验证用户,我认为 Firebase Auth 和 MySQL 必须事先有共同的 key (如用户 ID、电子邮件地址等)。
但我不确定这是否是常见的方式(简单且安全)。
我读过多个线程,
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。为了验证用户,在'SignUp'步骤,我是否需要预先在Firebase Auth和MySQL中存储一个公共(public) key ?
问题2-1-1。 (如果是)在 Firebase Auth 和 MySQL 中拥有相同的数据不会成为安全问题吗? (当然,我不能在MySQL中保存任何其他私有(private)数据(密码,电话号码等)
问题2-1-2。 (如果是)您认为公共(public) key 的最佳数据是什么? (用户 ID、电子邮件地址、自动递增的用户 ID 等)
问题2-2。 (如果没有)如何通过 iOS 同步 Firebase 和 MySQL?
问题3。那么,这整个过程是正确的吗?
- 设置 iOS、Firebase Auth、MySQL
- 当用户注册时,一个电子邮件地址(可能还有用户 ID)将被发送到 Firebase Auth 和 MySQL。但是密码只会发送到 Firebase。
- 在登录期间,如果用户设置并保存首选项,iOS 会将数据发布到 MySQL 的“用户”表中的“用户 ID”行。
- 当用户再次登录时,iOS 将从 Firebase Auth 获取 token 并发送到 MySQL。
- token 将用于通过比较解密 token 和 MySQL 公用 key 来验证用户。
- 如果通过验证,则 MySQL 会将用户的其他属性发送到 iOS。
- iOS 将获取用户的属性数据。
这是我第一次构建此功能。
请回复我的问题!
提前致谢!
最佳答案
不,您不需要提前存储公共(public) key 。
当用户登录时,您将在客户端(iOS 设备)上获得一个 JWT。然后您将把这个 JWT 附加到服务器的每个请求的 header 中。然后在您的服务器上,您将使用此 JWT 向 Firebase 进行身份验证,如果成功,它将返回一个用户 ID。并且您可以将其存储在您的数据库中。
关于ios - 如何通过 iOS(swift) 将 Firebase Auth 与 MySQL DB 同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54703955/