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

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

  1. 用电子邮件login
  2. 用Facebooklogin

似乎有两种不同的身份validation系统可以使用:

  1. Django用户authentication系统
  2. Django Rest框架authentication

我应该如何处理我的API?

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

在大多数情况下 ,您已经使用Django身份validation系统,并且可以信任您的应用程序存储密码,您可以使用类似于BasicAuthentiction 。 大多数人不能,虽然他们不信任他们的应用程序生态系统,所以他们使用TokenAuthenticationOAuth2Authorization (结合OAuth提供者 ) 等基于令牌的身份validation系统。 你可以在Stack Overflow的这个答案中阅读更多关于每个authenticationtypes的信息。

但在你的情况下 ,你基本上只能使用类似于OAuth 2的东西 。 这是因为您需要将用户与令牌关联起来,并且大多数身份validation系统都要求您提供用户名和密码。 对于社交帐户,通常情况并非如此,他们通常无法login。OAuth 2与标准的Djangologin结合使用,因此您不仅仅限于用户名和密码。 我已经写了更多关于如何在这个详细的堆栈溢出的答案 。