【问题标题】:Authenticating requests in Django test client在 Django 测试客户端中对请求进行身份验证
【发布时间】:2021-11-28 09:02:32
【问题描述】:

当我使用Postman(在服务器运行时)测试它时,我的 API 可以工作。例如:

当我使用 Django 测试客户端进行测试时,我可以登录,但不能验证请求。例如:

headers = {'Authorization': 'Token ' + token}
response = client.get('/api/v1/users/auth/user/', **headers)

响应对象包含:

'_container': [b'{"detail":"Authentication credentials were not provided."}']

由于某种原因,令牌最终出现在 request 中,而不是标题中:

'request': {'Authorization': 'Token 665c371b1b894abba102cdbae8b35b613321791d',

我错过了什么?

【问题讨论】:

  • get方法中的第二个参数是传递payload。要将令牌添加到标头使用参数extra={ "HTTP_AUTHORIZATION": f"Token {access_token}" }
  • @JaskaranSingh 仍然遇到与response = client.get('/api/v1/users/auth/user/', extra={ "HTTP_AUTHORIZATION": f"Token {token}" }) 相同的错误

标签: django django-rest-framework authorization django-testing


【解决方案1】:

我终于找到了有效的方法:

response = client.get('/api/v1/users/auth/user/', 
                      **{ "HTTP_AUTHORIZATION": f"Token {token}" })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-26
    • 2017-12-27
    • 1970-01-01
    • 2011-08-29
    • 2013-10-23
    • 1970-01-01
    • 2011-05-20
    • 2013-06-06
    相关资源
    最近更新 更多