首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Django中使用身份验证进行测试

在Django中使用身份验证进行测试
EN

Stack Overflow用户
提问于 2021-09-09 02:34:38
回答 1查看 60关注 0票数 0

我正在尝试测试两个端点,它们需要用户在Django中获得授权:

代码语言:javascript
复制
    def test_one(self) -> None:
        client = Client()
        user = client.post('/create', {
                            'username': 'bob.smith',
                            'email': 'bob@gmail.com',
                            'password': 'password',
        })
        token = client.post('/gettoken', { 
                            'identity': 'bob.smith', 
                            'password': 'password',
        })
        x = token.json()
        resp = client.get('/changepassword', headers={"Authorization": f"Bearer {x['access']}"})
        self.assertEqual(resp.status_code, 200)

但是,它一直返回一个403:

代码语言:javascript
复制
{"detail":"Authentication credentials were not provided."}

X的内容是:

代码语言:javascript
复制
{'refresh': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTYzMTI0MTIwNSwianRpIjoiNDdjNzM5NThkNmYyNGJiMzkxMzRlM2Y2NThhZWI1MjEiLCJ1c2VyX2lkIjoxLCJuYW1lIjoiYm9iYnkuc21pdGgiLCJlbWFpbCI6ImJvYkBzZWNkaW0uY29tIiwiZ3VpZCI6NjA2NzU1ODI4NX0.lqdU5EfSA3DRbfxqum6XyvBc28t-vam8GVDq4W-NOsz7j9VTcg-i9AYQO0V-PLF7Lo89i6Pq50u0tZop7X5PMUryc3sCWPPnEsPyTm7Fi_cVV054E8chd-BP9fzykwW7ef7ufLTjzzPJfQdniq48jlRmce8Yjv_SspwoAhU2uYO54jtn2NNMRk80NckKyzxy9TwU9tItlPMCtoeK1SCucVsv-PfTJscxEXcaC347AZ0Dytqm2DVyDzQbt8RE9MKOXbHkhijeaftNBuiOMqJXE7NWQQ37iyF8bF2iPsc0M-T7ECFwsfFgPK_TD93ETCl9k_o6_6yxOHvx83dk6vGyzONJgl0MJ_W_y_B1UibQttBMoDfMwCxkM7akQ1OhL3ccb7GW-nGgqlOVREfxxW5xCN6h7O9cPMVk74jQ4xv2N6SlkEWIqb5UhQ4ZIJvFVrw-BOHLY_AqvnMadD9gYn7MaDPGXlpCX2EqOvOmKinASuSTJ94kXZ9pwMzuo_b-j5DnQWKgShZydpMZTt77TZ8_MZUtBBf7W-E_z71auQrgopgq82hHEpDfq3FoY4NXUq1IOEaJxJVpFcboXKep4WXQmRliRyqfIbwEAg7DOOiQ6cKrvbScPUKCpfYfzrt2f9fQbgtwwZYxHgW3-sLRP8r10UQzMaa8yR8ot-oQIq4xy5U', 'access': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjMxMTU2NjA1LCJqdGkiOiJkZDliMWI3Yjc0N2E0YjcxYjJhZjg3ZGM0ZjUzODdmZiIsInVzZXJfaWQiOjEsIm5hbWUiOiJib2JieS5zbWl0aCIsImVtYWlsIjoiYm9iQHNlY2RpbS5jb20iLCJndWlkIjo2MDY3NTU4Mjg1fQ.dnlYgqfTvrQPBmAsZgJ5N39dtMANbBYE0kW3ZPCkAX8KWEsQrJwPQRbMYW_AetjowEkiSaWEQs8T4Hs553guW8lpdzg4_SiKjIXXodJJkfGNq9rDC9bpmLSJigVvpCM-AkgXsNUbZKrzP97fk5CZrVvyGszNlT1Oe66OSQrNQuaIqXSQ20XjuwzpSfEB3qJeC45LMgvHRBbEG0V2jOD5ReBxGJGoOPXVYS7vwfy7dLCq2iT-Kkpny4fALKjfM4bpux6UG5kJWrCLp2ybtCLTgJ9y4pvAhzEzmb1IeqtRV-gHQtaqTbMQl5cIhHdvmtMbBSQrzdG3yYqObKoyMW4oQLu8txKE4huptaInJcnXo4j2PFMPD-x3TtJOqOPYbfgb9Vu1-FCT0um5ZPnr9jv6j0ll92CuuHa7rBRatmzvLIJblpJ-ta6IkIZC6XkeEg3Sfg-dbnpSYaJ5fNxQm7r35oGj2j7r8fnvxlnYGPhmXJEdyas798Z001_TXrnHKsv2a1zNNJHQuK8sTmgAC4R1Fs0JQF4yBmIJ4TverKdiGOUHqYAYoEjNX69hdXeu_4AsAdUiRRzSYNbmuZFTEd-iREz0VgMs7QBIecVBzz33kFfgdYTy64qq9NDz3HIkzPbvw4xdGEFp8UTJlCfCFfdkzAT8pb_czC4xufdm9bSvK5E'}

你知道为什么它说没有提供身份验证详细信息吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-09 02:54:39

如果您正在使用django rest框架,请使用APIClient而不是Client

代码语言:javascript
复制
client.credentials(HTTP_AUTHORIZATION='Bearer ' + x['access'])

DRF Docs

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69111570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档