Skip to content

Instantly share code, notes, and snippets.

@rluts
Last active April 10, 2025 16:38

Revisions

  1. Roman Luts revised this gist May 18, 2018. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions token_auth.py
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,7 @@
    from channels.auth import AuthMiddlewareStack
    from rest_framework.authtoken.models import Token
    from django.contrib.auth.models import AnonymousUser
    from django.db import close_old_connections


    class TokenAuthMiddleware:
    @@ -19,6 +20,7 @@ def __call__(self, scope):
    if token_name == 'Token':
    token = Token.objects.get(key=token_key)
    scope['user'] = token.user
    close_old_connections()
    except Token.DoesNotExist:
    scope['user'] = AnonymousUser()
    return self.inner(scope)
  2. Roman Luts revised this gist May 2, 2018. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion token_auth.py
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,6 @@
    from channels.auth import AuthMiddlewareStack
    from rest_framework.authtoken.models import Token
    from django.contrib.auth.models import AnonymousUser


    class TokenAuthMiddleware:
    @@ -19,7 +20,7 @@ def __call__(self, scope):
    token = Token.objects.get(key=token_key)
    scope['user'] = token.user
    except Token.DoesNotExist:
    pass
    scope['user'] = AnonymousUser()
    return self.inner(scope)

    TokenAuthMiddlewareStack = lambda inner: TokenAuthMiddleware(AuthMiddlewareStack(inner))
  3. Roman Luts revised this gist Apr 6, 2018. 1 changed file with 14 additions and 8 deletions.
    22 changes: 14 additions & 8 deletions token_auth.py
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,7 @@
    from channels.auth import AuthMiddlewareStack
    from rest_framework.authtoken.models import Token


    class TokenAuthMiddleware:
    """
    Token authorization middleware for Django Channels 2
    @@ -9,11 +11,15 @@ def __init__(self, inner):
    self.inner = inner

    def __call__(self, scope):
    try:
    token_header = dict(scope['headers'])[b'authorization'].decode().split()
    if token_header[0] == 'Token':
    token = Token.objects.get(key=token_header[1])
    scope['user'] = token.user
    except:
    pass
    return self.inner(scope)
    headers = dict(scope['headers'])
    if b'authorization' in headers:
    try:
    token_name, token_key = headers[b'authorization'].decode().split()
    if token_name == 'Token':
    token = Token.objects.get(key=token_key)
    scope['user'] = token.user
    except Token.DoesNotExist:
    pass
    return self.inner(scope)

    TokenAuthMiddlewareStack = lambda inner: TokenAuthMiddleware(AuthMiddlewareStack(inner))
  4. Roman Luts created this gist Mar 19, 2018.
    19 changes: 19 additions & 0 deletions token_auth.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    from rest_framework.authtoken.models import Token

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

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

    def __call__(self, scope):
    try:
    token_header = dict(scope['headers'])[b'authorization'].decode().split()
    if token_header[0] == 'Token':
    token = Token.objects.get(key=token_header[1])
    scope['user'] = token.user
    except:
    pass
    return self.inner(scope)