Я не могу проверить jwt-токен [django].
введите описание изображения здесь
Я использую drf-jwt : https://styria-digital.github.io/django-rest-framework-jwt/
я сделал жетон
def jwt_login(user: User):
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
payload = jwt_payload_handler(user)
token = jwt_encode_handler(payload)
return token
и модель пользователя здесь
class User(AbstractUser):
username = None
email = models.EmailField(unique=True, db_index=True)
secret_key = models.CharField(max_length=255, default=get_random_secret_key)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
class Meta:
swappable = 'AUTH_USER_MODEL'
@property
def name(self):
if not self.last_name:
return self.first_name.capitalize()
return f'{self.first_name.capitalize()} {self.last_name.capitalize()}'
И урлы
path('api-jwt-auth/', verify_jwt_token),
path('api-jwt-auth/2', obtain_jwt_token),
path('api-jwt-auth/3', refresh_jwt_token),
Настройки
JWT_EXPIRATION_DELTA_DEFAULT = 2.628e+6 # 1 month in seconds
JWT_AUTH = {
'JWT_EXPIRATION_DELTA': datetime.timedelta(
seconds=env.int(
'DJANGO_JWT_EXPIRATION_DELTA',
default=JWT_EXPIRATION_DELTA_DEFAULT
)
),
'JWT_AUTH_HEADER_PREFIX': 'JWT',
'JWT_GET_USER_SECRET_KEY': lambda user: user.secret_key,
'JWT_RESPONSE_PAYLOAD_HANDLER': 'pick_restful.selectors.jwt_response_payload_handler',
'JWT_AUTH_COOKIE': 'jwt_token',
'JWT_AUTH_COOKIE_SAMESITE': 'None'
}
Я получил jwt-токен Но я не могу проверить этот токен в /api-jwt-auth/
эта ошибка
что случилось?
Внутренняя ошибка сервера: /api-jwt-auth/ Traceback (последний последний вызов): File "/home/ec2-user/back-end/venv/pick/lib/python3.7/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) Файл "/home/ec2-user/back-end/venv/pick/lib/python3.7/site-packages/django/core/handlers/base.py", строка 181, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/ec2-user/back-end/venv/pick/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view return view_func(*args, **kwargs) Файл "/home/ec2-user/back-end/venv/pick/lib/python3.7/site-packages/django/views/generic/base.py", строка 70, in view return self.dispatch(request, *args, **kwargs) Файл "/home/ec2-user/back-end/venv/pick/lib/python3.7/site-packages/rest_framework/views.py", строка 509, в dispatch response = self.handle_exception(exc) Файл "/home/ec2-user/back-end/venv/pick/lib/python3.7/site-packages/rest_framework/views.py", строка 469, in handle_exception self.raise_uncaught_exception(exc) Файл "/home/ec2-user/back-end/venv/pick/lib/python3.7/site-packages/rest_framework/views.py", строка 480, in raise_uncaught_exception raise exc Файл "/home/ec2-user/back-end/venv/pick/lib/python3.7/site-packages/rest_framework/views.py", строка 506, в dispatch response = handler(request, *args, **kwargs) Файл "/home/ec2-user/back-end/venv/pick/lib/python3.7/site-packages/rest_framework_jwt/views.py", строка 34, в post jwt_create_response_payload(token, user, request, issued_at) Файл "/home/ec2-user/back-end/venv/pick/lib/python3.7/site-packages/rest_framework_jwt/authentication.py", строка 58, в jwt_create_response_payload return api_settings.JWT_RESPONSE_PAYLOAD_HANDLER(*args, **kwargs) TypeError: jwt_response_payload_handler() принимает от 1 до 3 позиционных аргументов, но было задано 4