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 エラーが発生します。なんでそうなの ?Isn't Authorization()class は、is_authorizedメソッドに対して true を返すことを意図しています。ドキュメントには次のように書かれてAuthorization()います:

no-op 認可オプションでは、権限チェックは実行されません。

では、なぜ失敗するのですか?

アップデート:

また、何があってもメソッドで常に返されるカスタム承認クラスも試しましたTrueが、それでも 401 UNAUTHORIZED エラーが発生します。is_authorized手がかりはありますか?

4

1 に答える 1

2

私は同じ問題に直面しています。SessionAuthentication は HTTP POST では動作しないようです。

ここで詳しく説明しました

HTTP POST の Tastypie で SessionAuthentication は機能しますか?

于 2013-03-13T16:26:25.553 に答える