2017-03-28 1 views
2

api 키 인증이있는 tastypie api가 있습니다.Tastypie api는 우편 배달부와 함께 작업하지만 파이썬 요청에는 사용되지 않습니다.

GET 요청에 대한 두 가지 방식으로 작동하지만 게시물 요청에 대해서는 작동하지 않습니다.

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

보기에서 request.user를 인쇄하려고하면 요청자가 우체부에서 온 경우 일반/실제 사용자입니다. 그러나 파이썬 요청의 경우 익명의 사용자입니다.

파이썬 요청

, 나는이 일을하고있다 : 우편 배달부에 의해 제공

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이 인증을 사용하도록 설정되지 않았는지 확인합니다. 우편 배달부는 요청과 함께 브라우저 쿠키도 보내므로 다른 행동에 대한 이유 일 수 있습니다.

이 경우 API 인증이 작동하지 않는다는 의미입니다. 우편 배달부가 SessionAuthentication을 사용하고 있으므로 작동합니다. INSTALLED_APPS에 tastypie를 추가하고 데이터베이스에 api 키를 만들거나 저장했는지 확인하십시오.

+0

쿠키가 우편 발송자 (서버 로그에서 본)에 의해 설정되는 것을 보았 기 때문에 올바른 것으로 보입니다. 하지만 인증 = ApiKeyAuthentication() 사용하고 있습니다. 또한 우리는 동일한 서버에 웹 사이트와 API를 가지고 있으므로 sessionauthentication을 사용하고 있습니다. 그러나 개별 api에 대해 우리는 apikeyauthentication을 가지고 있습니다. 해결책은 무엇입니까? – user2349115

+0

아마도 인증 자격 증명을 제공하는 방식이 올바르지 않을 수 있습니다. 그것을 고치려고 시도하십시오 – hspandher

+0

고마워 ................ – user2349115

관련 문제