【发布时间】:2021-09-15 18:08:12
【问题描述】:
我正在创建一个注销视图,以使用 simplejwt 从我的 django restframework 中注销。没有直接的注销方式,因此只有将刷新令牌列入黑名单才是解决办法。
那些打印语句按预期工作,因此它确实将标记列入黑名单,但 return 语句不返回任何内容,为什么会这样,我如何返回响应?我猜 save 函数不返回任何内容,是真的吗?
class LogoutSerializer(serializers.Serializer):
refresh = serializers.CharField()
def validate(self, attrs):
self.token = attrs['refresh']
return attrs
def save(self, **kwargs):
try:
RefreshToken(self.token).blacklist()
print('done')
return Response({'msg':'token has been blacklisted'})
except TokenError:
print('not done')
return Response({'msg':'token is expired or blacklisted'})
views.py
class LogoutAPIView(APIView):
serializer_class = LogoutSerializer
permission_classes = [IsAuthenticated]
def post(self, request):
serializer = self.serializer_class(data = request.data)
serializer.is_valid(raise_exception = True)
serializer.save()
return Response(status = status.HTTP_204_NO_CONTENT)
【问题讨论】:
标签: django rest serialization django-rest-framework django-rest-framework-simplejwt