1

我想做的是设置一个简单的自定义Resource,如下所示:

MailResource(Resource):
    to = fields.CharField(attribute='To')
    subject = fields.CharField(attribute='Subject')
    message = fields.CharField(attribute='Message')

    class Meta:
        resource_name = 'mail'
        allowed_methods = ['post']
        authorization = Authorization()

        def detail_uri_kwargs(self, bundle_or_obj):
            kwargs = {}
            if isinstance(bundle_or_obj, Bundle):
                kwargs['pk'] = bundle_or_obj.obj.uuid
            else:
                kwargs['pk'] = bundle_or_obj.uuid
            return kwargs

        def obj_create(self, bundle, request=None, **kwargs):
            print bundle.obj
            print request
            print kwargs
            # Create the object
            return bundle

但是当我使用 curl 发出测试帖子请求时,我总是收到 401 UNAUTHORIZED 错误。为什么这样 ?类不是Authorization()要为is_authorized方法返回true。文档Authorization()是:

no-op 授权选项,不执行权限检查。

那为什么它失败了?

更新:

我还尝试了一个自定义授权类,无论如何它总是True在方法中返回,但它仍然会引发 401 UNAUTHORIZED 错误。is_authorized任何线索?

4

1 回答 1

2

我一直面临着同样的问题。看起来 SessionAuthentication 不应该与 HTTP POST 一起使用。

已经解释了更多here

SessionAuthentication 在 Tastypie 中是否适用于 HTTP POST?

于 2013-03-13T16:26:25.553 回答