【发布时间】:2013-03-11 09:40:14
【问题描述】:
我要做的是设置一个简单的自定义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 吗? documentation 说 Authorization() 是:
no-op 授权选项,不执行权限检查。
那为什么会失败呢?
更新:
我还尝试了一个自定义授权类,无论如何它总是在 is_authorized 方法中返回 True,但它仍然会引发 401 UNAUTHORIZED 错误。有什么线索吗?
【问题讨论】:
-
你使用什么样的身份验证?
-
你的资源中只允许的方法是'post',这意味着你不能在这个资源上进行GET。
-
我根本没有使用身份验证,即使我使用身份验证,结果仍然是一样的。
-
是的,我只想允许此资源的 post 方法,并正在发出 post 请求以检查它。
-
您可能还想启用 GET 并查看您得到的结果。为您提供 401 的 curl 调用是什么样的?