2

我写了一个 Flask 应用程序。在那,我使用基本身份验证来限制某些 POST API 视图。从 Python 请求中,我可以访问这些视图 -

print post(url, json=data, auth=('username', 'password'))

从卷曲,

curl -a username:password -d "data" url

如何在 app.post 中做同样的事情?我试过authauthorization等作为参数,post但它们是无效的。

response = self.app.post(
            url,
            data=data,
            headers={
            'content-type': 'application/json'
            },
            follow_redirects=True
        )
4

2 回答 2

5

基本授权凭据存储在标头中,如下所示 -

"Authorization": "Basic username:password"

但是,该username:password部分是 base64 编码的。所以可以使用 base64 模块来做同样的事情。

import base64

headers={
   'content-type': 'application/json',
   'Authorization': 'Basic %s' % base64.b64encode('username:password')
}

在上述情况下,授权将设置为Basic dXNlcm5hbWU6cGFzc3dvcmQ=

这将允许您使用来自 Flask 测试框架的基本授权。干杯!!

于 2016-06-06T10:45:44.820 回答
0

我发现上述方法适合在单元测试中发送发布请求。但是这样做你应该记住,你应该在测试配置中禁用 CSRF 保护。

类测试配置(配置):

WTF_CSRF_ENABLED = 假

祝 GSOC 16 好运。

于 2016-06-03T19:32:35.253 回答