Django 如何向用户添加权限?

Django 如何向用户添加权限?,django,tastypie,Django,Tastypie,我正在用django tastypie构建一个IOS应用程序。用户的默认权限仅为“获取”某物。但是,用户可以被授予“添加”权限来发布某些内容。如何设计tastypie的api?如何向使用django-tastypi的用户授予权限?首先,我想指出身份验证和授权之间的细微差别,这在以前使用tastypi时让我感到困惑: 认证意味着“向我证明你是你声称的人”——即某种形式的密码登录或API密钥 授权的意思是“既然我知道你是谁,让我检查一下你拥有什么样的特权-即,让我看看你属于哪个用户组/你的用户帐户

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

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

  • 认证意味着“向我证明你是你声称的人”——即某种形式的密码登录或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
我使用的是DjangoAuthorization(),但例如,如何向用户添加add_消息权限?