Невозможно проверить электронную почту при использовании простого JWT в django
В моем django-приложении секции регистрации и входа работают правильно. Когда кто-то регистрируется, он получает подтверждение по электронной почте, но при нажатии на ссылку подтверждения электронной почты учетная запись не проверяется. Я использую try и except, причем except выполняется каждый раз, а try никогда не выполняется.
models.py
username = models.CharField(max_length=255, unique=True, db_index=True)
email = models.EmailField(max_length=255, unique=True, db_index=True)
is_verified = models.BooleanField(default=False)
views.py
serializer_class = EmailVerificationSerializer
def get(self, request):
token = request.GET.get('token')
try:
key = jwt.decode(token, settings.SECRET_KEY)
user = User.objects.get(id=key['user_id'])
if not user.is_verified:
user.is_verified = True
user.save()
return Response({'email': 'Your email has been activated'}, status=status.HTTP_200_OK)
except jwt.exceptions.DecodeError as identifier:
return Response({'error': 'token not valid'}, status=status.HTTP_400_BAD_REQUEST)
Пожалуйста, я хочу знать, почему код в разделе try
никогда не выполняется, даже если токен исправен и срок его действия не истек.
Попробуйте использовать key = jwt.decode(token, settings.SECRET_KEY, algorithms=['HS256'])