【问题标题】:tastypie returns 401 unauthorized even when using Authorization class即使使用授权类,美味派也会返回 401 未授权
【发布时间】: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 吗? documentationAuthorization() 是:

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

那为什么会失败呢?

更新:

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

【问题讨论】:

  • 你使用什么样的身份验证?
  • 你的资源中只允许的方法是'post',这意味着你不能在这个资源上进行GET。
  • 我根本没有使用身份验证,即使我使用身份验证,结果仍然是一样的。
  • 是的,我只想允许此资源的 post 方法,并正在发出 post 请求以检查它。
  • 您可能还想启用 GET 并查看您得到的结果。为您提供 401 的 curl 调用是什么样的?

标签: django tastypie


【解决方案1】:

我也遇到过同样的问题。看起来 SessionAuthentication 不应该与 HTTP POST 一起使用。

这里有更多解释

Does SessionAuthentication work in Tastypie for HTTP POST?

【讨论】:

  • 我已经让 POST 与 SessionAuthentication 一起使用,但您需要按照文档中的说明传递 csfr 令牌。
  • 我已经为您链接到的问题添加了一个带有示例的答案。不确定 SessionAuthentication 是否适用于 curl。
  • 我想您可以手动获取令牌并将其包含在您的 curl 调用中。
猜你喜欢
  • 1970-01-01
  • 2015-02-17
  • 1970-01-01
  • 2020-01-23
  • 2023-03-20
  • 2023-03-09
  • 2014-10-22
  • 1970-01-01
  • 2013-07-04
相关资源
最近更新 更多