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

标签 python ios django django-rest-framework

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

  1. 使用邮箱登录
  2. 使用 Facebook 登录

似乎有两种不同的身份验证系统可供我使用:

  1. Django User Authentication System
  2. Django Rest Framework Authentication

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

最佳答案

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

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

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

关于python - 使用 Django Rest Framework 和 IOS 应用程序时要使用哪种身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27997483/

相关文章:

python - Django 将输入数据从 HTML 文件传递​​到 python 脚本,然后将最终数据发送到另一个 HTML 文件

python - Django Rest 框架将字段组合在一起

Python tarfile 进度输出?

java - 应用程序之间的通信?

ios - 从 parentViewController 中隐藏或暂时删除子 ViewController?

ios - 选择 UIButton 时,这个按钮人工制品是什么?

mysql - 在 Django 中使用原始 SQL

python - 导入错误 : No module named _mssql

python - Numpy Array 获取按行搜索的行索引

iphone - 在动画 Sprite 上添加标签