2

Flask アプリケーションを作成しました。その中で、基本認証を使用して特定の POST API ビューを制限しています。Python リクエストから、これらのビューに次のようにアクセスできます -

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

そしてカールから、

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

app.post で同じことを行うには? などをパラメータとして試しましたがauth、無効でした。authorizationpost

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

2 に答える 2

5

Basic authorization credentials are stored in header as follows -

"Authorization": "Basic username:password"

However the username:password part is base64 encoded. So one can use the base64 module to do the same.

import base64

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

In the above case, the Authorization will be set to Basic dXNlcm5hbWU6cGFzc3dvcmQ=

This will allow you to use basic authorization from Flask testing framework. Cheers !!

于 2016-06-06T10:45:44.820 に答える
0

上記の方法は、単体テストで投稿リクエストを送信するのに適していることがわかりました。ただし、そのためには、テスト構成で CSRF 保護を無効にする必要があることに注意する必要があります。

クラス TestingConfig(Config):

WTF_CSRF_ENABLED = 偽

GSOC 16 の幸運を祈ります。

于 2016-06-03T19:32:35.253 に答える