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

Posted

技术标签:

【中文标题】使用 Django Rest Framework 和 IOS 应用程序时要使用哪种身份验证?【英文标题】:Which authentication to be used when using Django Rest Framework and IOS app? 【发布时间】:2015-03-15 20:32:51 【问题描述】:

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

    使用邮箱登录 用 Facebook 登录

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

    Django User Authentication System Django Rest Framework Authentication

我应该如何在我的 API 中处理这个问题?

【问题讨论】:

使用 Django Rest 框架身份验证 谢谢! DRF 身份验证非常简单,然后 Django 用户身份验证。易于学习:) 【参考方案1】:

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

在大多数情况下,您已经在使用 Django 身份验证系统,并且您可以信任存储密码的应用程序,您可以使用 use something like BasicAuthentiction。大多数人不能,或者他们不信任他们的应用程序生态系统,所以他们使用基于令牌的身份验证系统like TokenAuthenticationOAuth2Authorization(组合with an OAuth provider)。您可以阅读有关每种身份验证类型的更多信息in this answer on Stack Overflow。

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

【讨论】:

以上是关于使用 Django Rest Framework 和 IOS 应用程序时要使用哪种身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

Django Rest Framework 和 django Rest Framework simplejwt 两因素身份验证

18-Django REST framework-使用Django开发REST 接口

如何在 django-rest-framework 中为 API 使用 TokenAuthentication

Django-rest-framework 和 django-rest-framework-jwt APIViews and validation Authorization headers

django rest framework中文介绍

使用 django-rest-framework-simplejwt 注册后返回令牌