sbearben / chat-backend

Backend for Android ChatApp - written using Python Django. Repository for Android app: https://github.com/sbearben/ChatApp
15 stars 13 forks source link

You cannot call this from an async context #3

Open kingctan opened 4 years ago

kingctan commented 4 years ago

please see the comment below:

class TokenAuthMiddleware:
   """
    Token authorization middleware for Django Channels 2
    """

    def __init__(self, inner):
        self.inner = inner

    def __call__(self, scope):
        headers = dict(scope['headers'])
        if b'authorization' in headers:
            try:
                token_name, token_key = headers[b'authorization'].decode().split()
                if token_name == 'Token':
##############################################  error out here below:
                    token = Token.objects.get(key=token_key)
##############################################
                    scope['user'] = token.user
                    close_old_connections()
            except Token.DoesNotExist:
                scope['user'] = AnonymousUser()
        else:
            scope['user'] = AnonymousUser()

        return self.inner(scope)

TokenAuthMiddlewareStack = lambda inner: TokenAuthMiddleware(AuthMiddlewareStack(inner))