Django-rest-framework {"detail": "Учетные данные для аутентификации не предоставлены." } с помощью django-rest-knoxPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Django-rest-framework {"detail": "Учетные данные для аутентификации не предоставлены." } с помощью django-rest-knox

Сообщение Anonymous »

Я вижу ошибку {"подробно": "Учетные данные для аутентификации не были предоставлены". .

Это код, который я использую для входа в систему.

Моя модель:

Код: Выделить всё

class User(AbstractBaseUser):
STUDENT = 'STU'
SCHOOL = 'SCH'
INSTITUTE = 'INST'
TUTOR = 'TUT'
ACCOUNT_TYPE_CHOICES = [
(STUDENT, 'Student'),
(SCHOOL, 'School'),
(INSTITUTE, 'Institute'),
(TUTOR, 'Tutor'),
]
account_type = models.CharField(
max_length=4,
choices=ACCOUNT_TYPE_CHOICES,
default=SCHOOL,
)
name = models.CharField(max_length=255)
email = models.EmailField(unique=True,max_length=255)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_admin = models.BooleanField(default=False)
timestamp = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['name','account_type']

objects=UserManager()

def __str__(self):
return self.email

def has_perm(self,perm,obj=None):
return True

def has_module_perms(self,app_label):
return True

@property
def is_staff(self):
return self.is_admin

Мои сериализаторы:

Код: Выделить всё

from rest_framework import serializers
from .models import User
from django.contrib.auth import authenticate

# User Serializer

class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'account_type', 'name', 'email')

# Login Serializer

# I guess the validate function is not working .

class LoginSerializer(serializers.Serializer):
email = serializers.EmailField()
password = serializers.CharField()

def validate(self, data):
user = authenticate(request=None,**data)
if user and user.is_active:
return user
raise serializers.ValidationError("Incorrect Credentials")
Мои взгляды:

Код: Выделить всё

from rest_framework import generics, permissions,authentication
from rest_framework.response import Response
from knox.models import AuthToken
from knox.views import LoginView as KnoxLoginView
from .serializers import UserSerializer, RegisterSerializer, LoginSerializer
from django.contrib.auth import authenticate,login

# Login API

class LoginAPI(generics.GenericAPIView):
serializer_class = LoginSerializer
# authentication_class=[authentication.BasicAuthentication]
def post(self, request, *args, **kwargs):
serializer = LoginSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.validated_data
return Response({
"user": UserSerializer(user, context=self.get_serializer_context()).data,
"token": AuthToken.objects.create(user)[1]
})

Мои URL-адреса:

Код: Выделить всё

from django.urls import path, include
from .api import RegisterAPI, LoginAPI
from knox import views as knox_views

urlpatterns = [
path('api/auth/', include('knox.urls')),
path('api/auth/register/', RegisterAPI.as_view()),
path('api/auth/login/', LoginAPI.as_view()),
path('api/auth/logout/', knox_views.LogoutView.as_view(), name='knox_logout')
]

Кроме того, когда я предоставляю токен, сгенерированный во время регистрации, он сообщает, что пользователь неактивен или мертв. Но когда я проверяю свою базу данных и время истечения срока действия токена, он все еще активен.
/>Я пробовал разные сторонние библиотеки, такие как rest-auth, они также выдают ту же ошибку. Я также проверил много других ответов по той же теме, но их применение также не помогло.

Подробнее здесь: https://stackoverflow.com/questions/610 ... t-provided
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»