def post(self, request):
    serializer = LogoutSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response({"message":"로그아웃 성공되었습니다."}, status=status.HTTP_200_OK)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
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()

        except TokenError:
            raise serializers.ValidationError(detail={"만료된 토큰":"유효하지 않거나 만료된 토큰입니다."})
  1. RefreshToken을 받아 Logoutserializer로 보내어 blacklist()라는 곳에 저장한다. (blacklist 관련 링크) blacklist라는 것을 사용하게 되면 재사용되는 토큰을 막을 수 있고 토큰의 기록을 볼 수 있다.
  2. 리눅스의 crontab 명령어를 사용하여 python manage.py flushexpiredtokens를 주기적으로 갱신하면 blacklist에 저장되어있던 것들을 초기화 할 수 있다.