0

我正在用 django-tastypie 构建一个 IOS 应用程序。用户的默认权限只是“获取”某些东西。但是,可以授予用户“添加”权限以发布内容。如何设计tastepie的api?如何使用 django-tastypi 向用户授予权限?

4

1 回答 1

0

首先,我想指出身份验证和授权之间的细微差别,这让我在之前使用 sweetpie 时感到困惑:

  • 身份验证意味着“向我证明你就是你声称的那个人”——即某种形式的密码登录或 API 密钥
  • 授权的意思是“现在我知道你是谁了,让我看看你有什么样的权限 - 即让我看看你属于哪个用户组/为你的用户帐户授予了哪些特定权限等。

现在,考虑到这一点,如果您还没有,请查看此处非常简洁的示例。

例如,您可以通过以下方式将用户限制为只能访问他们自己的用户信息:

# REST endpoint for authenticating user accounts
class UserResource(ModelResource):

    class Meta:
        queryset = User.objects.all()
        resource_name = 'auth/user'
        authentication = BasicAuthentication()
        authorization = DjangoAuthorization()

    def apply_authorization_limits(self, request, object_list):
        return object_list.filter(username=request.user)

下面是在与视图交互时如何验证用户身份的片段:

# first check that the user is allowed to post
username = form.cleaned_data['username']
password = form.cleaned_data['password'] # @todo: remove this for production
user = authenticate(username=username, password=password)
if user is None:
    raise Http404('Error: new_frame: invalid username / password')
if not user.is_active:
    raise Http404('Error: new_frame: your account is inactive')
# username / password is correct + user is active, proceed with posting
于 2012-11-20T15:49:56.143 回答