我遇到了一些情况,我在django中使用这些包进行rest-api和身份验证:
django-rest-framework (REST提供程序)django-allauth (用户认证)django-rest-framework-jwt (支持JSON令牌)在django-allauth中,我强制在注册后(ACCOUNT_EMAIL_VERIFICATION = 'mandatory')确认电子邮件,使用会话身份验证登录是可以的,并遵循此选项,但jwt生成令牌并忽略此选项。
我该怎么处理呢?
发布于 2015-07-20 13:18:48
最后我找到了答案。
我们需要重写ObtainJSONWebToken类:
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检查电子邮件的有效性,因为我们需要保持这种动态。
https://stackoverflow.com/questions/31515516
复制相似问题