5

使用 TastyPie 我有一个模型资源,它有一个 FK 用户。当我对 API 进行 POST 时,我必须像这样包含用户 ID:

 data : JSON.stringify({ name : 'value a', user : '12' }), 

我的用户必须通过登录或使用 API 密钥以及用户名和密码进行身份验证。在这两种情况下,我已经知道用户是谁

1)如何让用户确保user1不为user2创建资源?

2)或者发送用户ID是违反直觉的?我是否应该以某种方式从授权详细信息中获取用户,如果可以,如何?

4

1 回答 1

3

回答问题 #1:Tastypie 文档描述了如何创建每个用户的资源。假设用户已经是请求的一部分:

class MyResource(ModelResource):
    class Meta:
        queryset = MyModel.objects.all()
        resource_name = 'environment'
        list_allowed_methods = ['get', 'post']
        authentication = ApiKeyAuthentication()
        authorization = Authorization()

    # Only allow creation of objects belonging to the user
    def obj_create(self, bundle, **kwargs):
        return super(EnvironmentResource, self).obj_create(bundle, user=bundle.request.user)

    # Only allow accessing resources for this user
    def apply_authorization_limits(self, request, object_list):
        return object_list.filter(user=request.user)

要回答问题 #2,您可能应该让用户成为会话的一部分。

于 2013-10-29T04:42:43.123 回答