首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果电子邮件确认,django jwt生成令牌

如果电子邮件确认,django jwt生成令牌
EN

Stack Overflow用户
提问于 2015-07-20 11:37:45
回答 1查看 2K关注 0票数 3

我遇到了一些情况,我在django中使用这些包进行rest-api和身份验证:

  • django-rest-framework (REST提供程序)
  • django-allauth (用户认证)
  • django-rest-framework-jwt (支持JSON令牌)

在django-allauth中,我强制在注册后(ACCOUNT_EMAIL_VERIFICATION = 'mandatory')确认电子邮件,使用会话身份验证登录是可以的,并遵循此选项,但jwt生成令牌并忽略此选项。

我该怎么处理呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-20 13:18:48

最后我找到了答案。

我们需要重写ObtainJSONWebToken类:

代码语言:javascript
复制
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)

注意:记住,通过设置开关ACCOUNT_EMAIL_VERIFICATION检查电子邮件的有效性,因为我们需要保持这种动态。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31515516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档