iOS应用程序-用户表/模型(支持手动注册和Auth0)

iOS应用程序-用户表/模型(支持手动注册和Auth0),ios,mongodb,authentication,model,database,Ios,Mongodb,Authentication,Model,Database,我正在创建一个iOS应用程序,并且正在通过注册/登录流程了解如何构建我的用户模型 我想允许用户通过facebook/twitter注册,如果他们不想通过服务进行身份验证,还可以使用独立的电子邮件/密码 我正在使用auth0处理服务身份验证 如果一些用户通过电子邮件/密码注册,而另一些用户只是通过Auth0进行身份验证,那么存储/跟踪我的用户的标准流程是什么 这就是我到目前为止所做的: 我的用户模型将至少包含以下属性: _身份证 名字 电子邮件 密码(对于经过身份验证的用户,密码将为空) aut

我正在创建一个iOS应用程序,并且正在通过注册/登录流程了解如何构建我的用户模型

我想允许用户通过facebook/twitter注册,如果他们不想通过服务进行身份验证,还可以使用独立的电子邮件/密码

我正在使用auth0处理服务身份验证

如果一些用户通过电子邮件/密码注册,而另一些用户只是通过Auth0进行身份验证,那么存储/跟踪我的用户的标准流程是什么

这就是我到目前为止所做的:

我的用户模型将至少包含以下属性:

  • _身份证
  • 名字
  • 电子邮件
  • 密码(对于经过身份验证的用户,密码将为空)
  • auth0\u id(对于未经身份验证的用户将为空)
如何在登录时验证用户:

  • 如果手动注册(电子邮件/密码)的用户想要重新登录,我将检查他们的电子邮件是否存在于我的用户表中,然后对他们的密码运行匹配,如果匹配-返回用户对象

  • 如果通过服务进行身份验证的用户希望重新登录,我将调用Auth0,检查他们的Auth0\u id是否存在于我的users表中,然后运行return the user object

    • 这会带来任何安全问题吗

欢迎评论/建议

>你考虑使用内置在Auth0中的电子邮件/密码功能吗?这样,您就不必保留两种不同的逻辑。

我建议将用户和auth0模型彼此分离。例如:

用户模式:

  • _身份证
  • 名字
  • 电子邮件
  • 密码
Auth0架构:

  • _身份证
  • auth0\u id
  • 用户id
我还建议在用户模式上要求密码,并为通过Auth0注册的用户生成强密码。这将确保所有用户都拥有一个“标准”用户帐户,而不考虑Auth0,并且他们将来继续拥有这些服务(例如:用户删除其Facebook帐户,但继续使用您的服务–他们所要做的就是通过您的“忘记密码”流运行)


然后有一个标准的登录流和一个Auth0登录流,后者是标准的Auth0流,检查Auth0 ID是否存在并返回加入的用户记录。

是的,这会使它更容易。我相信auth0为我使用此功能增加了成本。我同意这是一个解决方案,但让我们假设我不想走这条路。。。