我对Django及其生态系统比较陌生。我正在使用django-tastypie为我们的移动客户端编写REST api。我已经遍历了Web上几乎所有有关如何使用好吃的东西来创建REST接口(interface)的示例。但它们都不是特定于从客户端发布数据以及如何授权客户端的。

如示例中所示,我使用了来自tastypie.authentication.BasicAuthentication的代码。它会打开一个询问用户名和密码的弹出窗口,并且在浏览器上可以正常工作。但是我不确定,它是否会在移动设备上做同样的事情(具体来说,是 native IOS应用程序)。如果用户不使用浏览器而是使用 native 应用程序,那么当用户请求登录时该弹出式窗口将如何显示在他/她的移动设备上,我不太清楚。

我对此完全迷失了,非常感谢您的帮助。

最佳答案

您可以 checkout 源并使用例如ApiKeyAuthentication。
您只需要发布用户名和api key 即可对用户进行身份验证。

看起来可用于ios应用程序。
这是检查代码的一部分。

def is_authenticated(self, request, **kwargs):
    """
    Finds the user and checks their API key.

    Should return either ``True`` if allowed, ``False`` if not or an
    ``HttpResponse`` if you need something custom.
    """
    from django.contrib.auth.models import User

    username = request.GET.get('username') or request.POST.get('username')
    api_key = request.GET.get('api_key') or request.POST.get('api_key')

    if not username or not api_key:
        return self._unauthorized()

    try:
        user = User.objects.get(username=username)
    except (User.DoesNotExist, User.MultipleObjectsReturned):
        return self._unauthorized()

    request.user = user
    return self.get_key(user, api_key)

https://github.com/toastdriven/django-tastypie/blob/master/tastypie/authentication.py#L128
https://github.com/toastdriven/django-tastypie/blob/master/tastypie/authorization.py#L42

关于django - 需要一个使用django-tastypie进行授权的示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7253171/

10-12 19:29