2017-03-28 14 views
2

私はapiキー認証でtastypie apiを持っています。郵便配達員と一緒に働いていますが、Pythonリクエストでは動作していません。

GETリクエストの両方の方法で動作しますが、ポストリクエストでは動作しません。ビュー内の

url = http://localhost:8000/api/path/?api_key=key&username=username 

私はからrequest.userを印刷しようとした場合、要求は郵便配達から来るとき、それは定期的/実際のユーザーです。しかし、Pythonリクエストでは、匿名ユーザーです。 Pythonの要求に

、私はこれをやっている:郵便配達人によって提供さ

url = http://localhost:8000/api/path/?api_key=key&username=username 
d = {"some": "data"} 
r = requests.post(url, data=json.dumps(d), headers={"content-type": "application/json"}) 

はコード:

POST /api/v1/abc/?api_key=somekey&username=something HTTP/1.1 
Host: localhost:8000 
Content-Type: application/json 
Cache-Control: no-cache 
Postman-Token: something 

{"something":"something"}  

私は質問のために教えてください。

API認証が機能していないそのために私のリソース:

class UserResource(ModelResource): 
class Meta: 
    queryset = User.objects.all() 
    fields = ['username', 'email', 'first_name', 'last_name'] 
    resource_name = 'user' 
    authentication = ApiKeyAuthentication() 
+0

どのような種類の認証を使用していますか? –

+0

そのapiキー認証。 – user2349115

+0

郵便配達員経由で送信している間に、リクエストのコードを(あなたの質問で)追加できますか?コードリンクは保存ボタンのすぐ下に表示されます。 –

答えて

1

は、あなたがあまりにもSessionAuthenticationを使用するか、またはenforce_csrfがあなたの認証で有効になっていていることを確認します。郵便配達員はリクエストと共にブラウザのCookieを送信するので、おそらくあなたが得ているさまざまな振る舞いの理由かもしれません。

この場合、API認証が機能していないことを意味します。郵便配達員はSessionAuthenticationを使用しているので、動作します。 INSTALLED_APPSにtastypieを追加し、データベースにapiキーを作成/保存してください。

+0

私は、クッキーが郵便配達員によって設定されているのを見たので、正しいと思われます(私はサーバーログで見ました)。しかし、私は認証= ApiKeyAuthentication()を使用しています。 また、私たちはセッション認証を使用しているので、ウェブサイトと同じサーバーにapiを持っています。しかし、個々のAPIについては、私たちは認証を受けています。 解決策は何ですか? – user2349115

+0

ほとんどの場合、認証資格情報を提供する方法が正しくない可能性があります。それを修正しようとしてください – hspandher

+0

ありがとうございました................ – user2349115

関連する問題