Dinlenme api kullanarak django sitesinde kimliği doğrulanan açısal bir uygulama yapıyorum. uygun olabilir iki farklı hata kodları vardır doğrulanmamış isteği izni verilmezDjango Rest Framework Kimlik Doğrulama Hataları
: DRF doc onlar şöyle bir inkar kullanıcı kimlik doğrulama, iki hata, HTTP 401 ve HTTP 403 sonuçlanacaktır belirtmektedirler .
- HTTP 401 Yetki
- HTTP 403 İzni bazı sahte verileri ile kimlik doğrulaması çalıştığınızda
Howenever, bunu bilerek yanlış, ben olsun hata yanıtı HTTP 400 ile engellendi non_field_errors
. Burada sorun nedir?
Önce kullanıcı adı ve parola ile basit bir kimlik doğrulaması yapıyorum, bu da kullanıcı belirtecini almak için yapılmış, bu da sitenin diğer işlemlerinde gerekli olacak. Bir expering Yetkilendirme jetonu elde etmek için bir yöntem kullanıyorum
, aşağıya görebilirsiniz:
sınıf ObtainExperingAuthToken (ObtainAuthToken): def (öz, istek, * args, ** Kargs) gönderebilir: Seri hale = self.serializer_class (veri = request.data)
if serializer.is_valid():
print serializer
user = UserProfile.objects.get(email=serializer.data['username'])
token, created = Token.objects.get_or_create(user=user)
utc_now = timezone.now()
if not created and token.created < utc_now - datetime.timedelta(hours=24):
token.delete()
print serializer.data
token = Token.objects.create(user=serializer.data['user'])
token.created = datetime.datetime.utcnow()
token.save()
groups = [group.name for group in user.groups.all()]
response_data = {
'email': user.email,
'token': token.key,
'groups': groups
}
return HttpResponse(json.dumps(response_data), content_type='application/json')
return HttpResponse(serializer.errors, status=400)
@Edit değeri REST_FRAMEWORK
Üzgünüz, bunu açıklığa kavuşturacağım. Ben kullanıcı erişim belirteci sağlamaz, ben arka uç ile erişim belirteci sağlamanız gereken bir son noktaya yanlış kullanıcı adı ve parola sağlayarak, kullanıcı verileri sağlayın. Yerine, bir Bad Request aldım ne yazık ki, Unathourized veya Forbbiden almak için bekliyordum. Soruyu "REST_FRAMEWORK" değerleri ile düzenleyeceğim. –