在 Django 中使用简单的 JWT 时无法验证电子邮件
Unable to verify email while using simple JWT in django
注册和登录部分在我的 Django 应用程序中正常运行。当有人注册时,他会收到一封确认电子邮件,但在点击电子邮件确认 link 后,该帐户未得到验证。我正在使用 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'])
注册和登录部分在我的 Django 应用程序中正常运行。当有人注册时,他会收到一封确认电子邮件,但在点击电子邮件确认 link 后,该帐户未得到验证。我正在使用 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'])