后DRF上的身份验证

时间:2017-11-08 19:40:59

标签: django oauth oauth-2.0 django-rest-framework

我的DRF出错了。当我尝试使用post方法进行身份验证时。

令牌对于管理员用户是正确的。当我使用安全的方法它是成功的,但使用post方法否,它不会验证

我的观点

class SpecialistListView(ListCreateAPIView):
    authentication_classes = (OAuth2Authentication,)
    permission_classes = (permissions.IsAdminUser,)
    queryset = Specialist.objects.all()
    serializer_class = SpecialistSerializer

我不明白为什么返回的代码的状态是HTTP 401 Unauthorized。

它不能用于测试。我检查邮递员是否成功。

我正在使用来自rest_framework.test的APIClient导入APIClient

my test_client

client = APIClient()
client.credentials(HTTP_AUTHORIZATION='Bearer EGsnU4Cz3Mx5bUCuLrc2hmup51sSGz')

class CreateSpecialist(APITestCase):
    fixtures = ['data','data2']
    def setUp(self):
        self.valid_payload = {
            'username': 'julia',
            'nick': 'julia',
            'password': 'intel12345',
            "first_name": "juliana",
            "last_name": "garzon"
        }

def test_create_specialist(self):
    response = self.client.post(
        reverse('specialists'),
        data=json.dumps(self.valid_payload),
        content_type='application/json'
    )
    self.assertEqual(response.status_code, status.HTTP_201_CREATED)

1 个答案:

答案 0 :(得分:1)

我只是在帖子之前添加凭据并且它有效! :d

def test_create_specialist(self):
    self.client.credentials(HTTP_AUTHORIZATION='Bearer EGsnU4Cz3Mx5bUCuLrc2hmup51sSGz')
    response = self.client.post(
        reverse('specialists'),
        data=json.dumps(self.valid_payload),
        content_type='application/json'
    )
    self.assertEqual(response.status_code, status.HTTP_201_CREATED)