使用Django Rest Framework和IOS应用程序时要使用哪种身份验证?

Shi*_*rma 8 python django ios django-rest-framework

我有一个iOS应用程序,它使用由Django REST框架驱动的API来存储,更新,从数据库中获取数据.我需要提供以下两个功能,将用户数据存储在服务器上:

  1. 用电子邮件登录
  2. 用Facebook登录

我可以使用两种不同的身份验证系统:

  1. Django用户认证系统
  2. Django Rest框架身份验证

我应该如何处理我的API?

Kev*_*own 15

当您在iOS上使用Django REST框架时,除非您使用浏览器,否则标准的Django身份验证系统是不可能的.这是通过DRF身份验证系统SessionAuthentication公开的,它依赖于您的应用程序能够通过请求传输cookie和CSRF令牌,这通常是不可能的.

您已经使用Django身份验证系统的大多数情况下,您可以信任您的应用程序存储密码,您可以使用类似的东西BasicAuthentiction.大多数人不能,或者他们不信任他们的应用程序生态系统,因此他们使用基于令牌的身份验证系统,TokenAuthentication或者OAuth2Authorization (与OAuth提供商结合使用).您可以在Stack Overflow上的这个答案中阅读有关每种身份验证类型的更多信息.

但在你的情况下,你基本上只能使用像OAuth 2这样的东西.这是因为您需要将用户与令牌相关联,并且大多数身份验证系统都要求您提供用户名和密码.对于社交帐户,通常情况并非如此,他们通常无法登录.OAuth 2与标准Django登录结合使用,因此您不仅限于用户名和密码.我已经在这个详细的Stack Overflow答案中写了更多关于它是如何工作的.