我有一个 Adobe Air 移动应用程序,可以通过 TastyPie 与 Django 进行通信。要使用该应用程序,人们必须先注册。因此他们必须提供他们的电子邮件和密码。之后他们将能够“登录”。我认为最好的主意是,在输入成功的用户名/密码组合后,API 密钥将被发送回移动应用程序并在那里进行缓存,以便用户“登录”。
如果您认为有更好的方法来注册和“登录”用户,请告诉我。
在 Django 内部,我有一个 UserRessource 类,用于在通过 POST 发送数据时注册新用户:
class UserResource(ModelResource):
class Meta:
allowed_methods = ['get', 'post']
queryset = User.objects.all()
resource_name = 'auth'
authentication = Authentication()
authorization = Authorization()
fields = ['username', 'email']
def obj_create(self, bundle, request=None, **kwargs):
username, email, password = bundle.data['username'], bundle.data['password'], bundle.data['password'],
try:
bundle.obj = User.objects.create_user(username, email, password)
except IntegrityError:
raise BadRequest('That username already exists')
return bundle
这非常有效。
但现在我在实际的登录过程中遇到了困难。在我看来,最好通过 GET(和 https)将用户名和密码发送到此资源,如果这些有效,则返回用户 api 密钥。但这可能吗?干净吗?通常,如果您向该资源发送 GET 请求,TastyPie 会显示当前数据库中的所有用户。但我不需要这些数据,所以我可以以某种方式覆盖它。我已经查过了http://django-tastypie.readthedocs.org/en/v0.9.9/resources.html http://django-tastypie.readthedocs.org/en/v0.9.9/resources.html但我无法让它发挥作用。是否有可能覆盖该行为?
所以实际的问题是使用 ApiKeyAuthentication “登录”用户的最佳方式是什么?
And 我的方法正确且干净,还是您有更好的方法? and 你有这个案例的例子吗?
预先非常感谢!