Не работает аутентификация Django Rest Framework
Я следовал руководству для создания модуля аутентификации Django в моем приложении, поэтому мне удалось создать пользователя и логин, но, к сожалению, некоторые ошибки возникли в моем проекте, когда я реализую аутентификацию, я прикрепил код и ошибку ниже, пожалуйста, посмотрите, может ли кто-нибудь помочь.
error:
django_1 | Traceback (most recent call last):
django_1 | File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner
django_1 | response = get_response(request)
django_1 | File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 181, in _get_response
django_1 | response = wrapped_callback(request, *callback_args, **callback_kwargs)
django_1 | File "/usr/local/lib/python3.10/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
django_1 | return view_func(*args, **kwargs)
django_1 | File "/usr/local/lib/python3.10/site-packages/django/views/generic/base.py", line 70, in view
django_1 | return self.dispatch(request, *args, **kwargs)
django_1 | File "/usr/local/lib/python3.10/site-packages/rest_framework/views.py", line 492, in dispatch
django_1 | request = self.initialize_request(request, *args, **kwargs)
django_1 | File "/usr/local/lib/python3.10/site-packages/rest_framework/views.py", line 394, in initialize_request
django_1 | authenticators=self.get_authenticators(),
django_1 | File "/usr/local/lib/python3.10/site-packages/rest_framework/views.py", line 272, in get_authenticators
django_1 | return [auth() for auth in self.authentication_classes]
django_1 | File "/usr/local/lib/python3.10/site-packages/rest_framework/views.py", line 272, in <listcomp>
django_1 | return [auth() for auth in self.authentication_classes]
django_1 | TypeError: 'str' object is not callable
аутентификация -> jwt.py
class JWTAuthentication(BaseAuthentication):
def authenticate(self, request):
auth_header = get_authorization_header(request)
auth_data = auth_header.decode('utf-8')
auth_token = auth_data.split(" ")
if len(auth_token) != 2:
raise exceptions.AuthenticationFailed('Token not valid')
token = auth_token[1]
try:
payload = jwt.decode(token, settings.SECRET_KEY, algorithms="HS256")
username = payload['username']
user = User.objects.get(username=username)
return (user, token)
except jwt.ExpiredSignatureError as ex:
raise exceptions.AuthenticationFailed('Token is expired')
except jwt.DecodeError as ex:
raise exceptions.AuthenticationFailed('Token is invalid')
except User.DoesNotExist as no_user:
raise exceptions.AuthenticationFailed('No such user')
return super().authenticate(request)
settings.py
REST_FRAMEWORK = {
'COERCE_DECIMAL_TO_STRING': False,
'DEFAULT_AUTHENTICATION_CLASSES': {
'authentication.jwt.JWTAuthentication'
}
}