来自iOS客户端的Django身份验证

来自iOS客户端的Django身份验证,ios,django,Ios,Django,让iOS客户端登录到Django应用程序的最佳方法是什么?我在下面探讨了两种方法,但每种方法似乎都有其优缺点 在客户端,我使用的是AFNetworking,但如果NSURLsession简化了身份验证过程,我也可以使用它 (A) 在Django中使用内置会话变量 客户端发送登录凭据以获取会话密钥,并在活动会话期间在所有头中使用该密钥 我可以在Django中使用@login\u required指令自动执行此操作,还是需要手动编写会话变量检查代码(例如,将传入会话密钥与request.sessio

让iOS客户端登录到Django应用程序的最佳方法是什么?我在下面探讨了两种方法,但每种方法似乎都有其优缺点

在客户端,我使用的是AFNetworking,但如果NSURLsession简化了身份验证过程,我也可以使用它

(A) 在Django中使用内置会话变量 客户端发送登录凭据以获取会话密钥,并在活动会话期间在所有头中使用该密钥

我可以在Django中使用@login\u required指令自动执行此操作,还是需要手动编写会话变量检查代码(例如,将传入会话密钥与request.session.session\u密钥进行比较)?此外,我还可以使用tastypi(尽管Django直接进行身份验证)作为API包装器,还是必须使用Django进行数据(JSON)处理

(B) 在tastypie(+Django)中使用OAuth2 为用户创建客户端ID和密钥;客户机在会话开始时发送此消息(以及用户名和pasword)-按照此tastypie管理会话


这似乎需要为每个用户生成一个客户端ID和一个密钥。从Django管理面板生成这个很简单,但我不清楚如何动态创建这个,并在创建用户后立即将其传递到客户端。

在tastypie中,有一个管理命令可以为没有API密钥的用户生成API密钥:

python manage.py backfill_api_keys
此外,还需要一种方法为每个新用户自动生成API密钥:

一旦所有客户端都拥有API密钥,您就可以使用BasicAuthentication获取要在应用程序中使用的访问令牌,然后您可以向
http://example.com/api/token/auth/
获取您的令牌


退房

谢谢法苏托。在您提到的OAuth2示例中,应用程序似乎是用客户端ID和密钥硬编码的-希望所有用户都可以使用相同的ID/密钥对?我认为是的,它们可以是相同的。无论如何,我不是100%肯定。
from django.contrib.auth.models import User
from django.db import models
from tastypie.models import create_api_key

models.signals.post_save.connect(create_api_key, sender=User)