我正在创建一个 iOS 应用程序,并且正在研究注册/登录流程,试图了解如何构建我的用户模型。
我想允许用户通过 facebook/twitter 注册,如果他们不想通过服务进行身份验证,也可以使用独立的电子邮件/密码。
我正在使用 auth0 来处理服务认证。
如果有些人通过电子邮件/密码注册,而其他人只是通过 Auth0 进行身份验证,那么存储/跟踪我的用户的标准过程是什么。
这是我到目前为止的结果:
我的用户模型将至少包含以下属性:
- _id
- 姓名
- 电子邮件
- 密码(对于经过身份验证的用户将为空)
- auth0_id(对于未经身份验证的用户将为空)
我将如何在登录时验证用户:
如果手动注册(电子邮件/密码)的用户想要重新登录,我将检查他们的电子邮件是否存在于我的用户表中,然后对他们的密码运行匹配,如果匹配 - 返回用户对象。
如果通过服务进行身份验证的用户想要重新登录,我将调用 Auth0,检查他们的 auth0_id 是否存在于我的用户表中,然后返回用户对象。
- 这会带来任何安全问题吗?
欢迎提出意见/建议!
最佳答案
我建议将您的 user 和 auth0 模型彼此分离。例如:
用户架构:
- _id
- 姓名
- 电子邮件
- 密码
Auth0 架构:
- _id
- auth0_id
- 用户编号
我还建议在用户架构上要求密码,并为通过 Auth0 注册的用户生成一个强密码。这将确保所有用户都有一个“标准”用户帐户,而不管 Auth0 和他们将来继续拥有这些服务(例如:用户删除了他们的 Facebook 帐户但继续使用您的服务 - 他们所要做的就是运行您的“忘记密码”流程)。
然后有一个标准的登录流程和一个Auth0登录流程——后者是标准的Auth0登录流程,你检查Auth0 ID是否存在并返回加入的用户记录。
关于iOS App - 用户表/模型(支持手动注册和 Auth0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26747021/