我正在使用 dj-rest-auth、allauth 和 simple jwt 来实现身份验证。
在 django-allauth 中,设置 ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION=True 将在验证电子邮件后自动登录用户。但是将密钥发布到“/dj-rest-auth/registration/verify-email/”仅返回 {“detail”:“ok”}。
下面的源代码解释了原因:
# allauth
class ConfirmEmailView(TemplateResponseMixin, LogoutFunctionalityMixin, View):
# ...
def post(self, *args, **kwargs):
# ...
if app_settings.LOGIN_ON_EMAIL_CONFIRMATION:
resp = self.login_on_confirm(confirmation)
if resp is not None:
return resp # this is a HttpResponseRedirect object
# ...
# dj-rest-auth
class VerifyEmailView(APIView, ConfirmEmailView):
# ...
def post(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.kwargs['key'] = serializer.validated_data['key']
confirmation = self.get_object()
confirmation.confirm(self.request)
return Response({'detail': _('ok')}, status=status.HTTP_200_OK)
由于我使用的是 JWT,如何在验证后覆盖此视图以登录用户并返回访问代码?