我有带有 api 密钥身份验证的美味派 api。
对于 GET 请求,它双向工作,但对于 post 请求,它不起作用。
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()
确保您没有使用SessionAuthentication
或在身份验证中启用了enforce_csrf
。由于邮递员也随请求一起发送浏览器cookie,这可能是您获得不同行为的原因。
如果是这种情况,则表示 API 身份验证不起作用。由于邮递员使用的是会话身份验证,因此它可以工作。确保您已在INSTALLED_APPS中添加了 tastypie,并在数据库中创建/存储了 api 密钥。