JWT Auth Middleware for Django Channels
Project description
django-channels-jwt-auth-middleware
Custom AuthMiddlewareStack to get users from JWT token for Django Channels.
Installation
Simply,
$ pip install django-channels-jwt-auth-middleware
And that it.
Usage
All you have to do is wrap your URLRouter.
from django_channels_jwt_auth_middleware.auth import JWTAuthMiddlewareStack
application = ProtocolTypeRouter({
"http": get_asgi_application(),
"websocket": JWTAuthMiddlewareStack(
URLRouter(
websocket_urlpatterns,
)
),
})
AuthMiddlewareStack
is already in JWTAuthMiddlewareStack
. If you want to change this, simply do;
from django_channels_jwt_auth_middleware.auth import JWTAuthMiddleware
from . import YourCustomMiddlewareStack
def CustomJWTAuthMiddlewareStack(app):
return JWTAuthMiddleware(YourCustomMiddlewareStack(app))
Simply as that :)
Testing
Testing is done by two methods.
- automated testing using django's test system.
- manual testing by hand.
I have tried testing the middleware through ChannelsLiveServerTestCase
, but currently this does not run due to pickle error in multiprocessing package from python.
For this reason no-token test cases were tested using django's test system using a test project, and test cases with jwt token is tested by hand.
Hand testing chrome extension called Browser WebSocket Client
was used. B
low is a simple evidence from the hand testing.
If you go to testproject/pages/tests.py
you will see the consumer that is used for testing.
class TestConsumer(WebsocketConsumer):
def connect(self):
self.accept()
# def disconnect(self, code):
# self.disconnect()
def receive(self, text_data, bytes_data=None):
context = {
'message': 'testing consumer',
}
user = self.scope['user']
if (user_id := user.id):
context.update({'user': str(user_id)})
else:
context.update({'user': None})
self.send(text_data=json.dumps(context))
simply, is a data is passed in to the websocket it will return a user id of None for AnonymousUser.
1.0.0 (2021-01-20)
- First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for django-channels-jwt-auth-middleware-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7fdaaf419ef7f800d0da990d8e0ca53f7d120a66de7fb4446f77607ea3b3dd76 |
|
MD5 | b34fa15c5d551cd334e881ac7027af01 |
|
BLAKE2b-256 | a738e0ebc367cded21b4ef7d7c484e139aebd6583e8d2dd25d668a908bf42761 |