Python django jwt在电子邮件确认后生成令牌

Python django jwt在电子邮件确认后生成令牌,python,django,django-rest-framework,django-allauth,Python,Django,Django Rest Framework,Django Allauth,伙计们,我在django中使用这些包进行rest api和身份验证: django rest框架(rest API提供程序) django allauth(用户身份验证) django rest framework jwt(支持JSON Web令牌) 在django allauth中,我强制要求在注册后确认电子邮件(ACCOUNT\u email\u VERIFICATION='mandatory'),使用会话身份验证登录是可以的,并遵循此选项,但jwt生成令牌并忽略此选项 我该怎么处理呢?

伙计们,我在django中使用这些包进行rest api和身份验证:

  • django rest框架(rest API提供程序)
  • django allauth
    (用户身份验证)
  • django rest framework jwt
    (支持JSON Web令牌)
在django allauth中,我强制要求在注册后确认电子邮件(
ACCOUNT\u email\u VERIFICATION='mandatory'
),使用会话身份验证登录是可以的,并遵循此选项,但jwt生成令牌并忽略此选项


我该怎么处理呢?

我终于找到了答案

我们需要重写
获取JSONWebToken
类:

def post(self, request):
     serializer = self.get_serializer(data=request.DATA)

     if serializer.is_valid():
         user = serializer.object.get('user') or request.user
         # check if settings swith is on / then check validity
         if settings.ACCOUNT_EMAIL_VERIFICATION == settings.ACCOUNT_EMAIL_VERIFICATION_MANDATORY:
             email_address = user.emailaddress_set.get(email=user.email)
             if not email_address.verified:
                  return Response(status=403, data='E-mail is not verified.')

         token = serializer.object.get('token')
         response_data = jwt_response_payload_handler(token, user, request)

         return Response(response_data)

     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
注意:记住,请使用设置开关
帐户\电子邮件\验证
检查电子邮件有效性,因为我们需要保持此动态