This django app is an extension for the Django Rest Framework. It tries to overcome the limitation of Token Authentication, which only uses a single token per user.
Install:
pip install django-rest-multitokenauth
Add 'django_rest_multitokenauth'
to your INSTALLED_APPS
in your Django settings file:
INSTALLED_APPS = (
...
'django.contrib.auth',
...
'rest_framework',
...
'django_rest_multitokenauth',
...
)
Configure Django REST Framework to use 'django_rest_multitokenauth.coreauthentication.MultiTokenAuthentication'
:
REST_FRAMEWORK = {
...
'DEFAULT_AUTHENTICATION_CLASSES': [
...
'django_rest_multitokenauth.coreauthentication.MultiTokenAuthentication',
...
],
...
}
And add the auth urls to your Django url settings:
from django.conf.urls import url, include
urlpatterns = [
...
url(r'^api/auth/', include('django_rest_multitokenauth.urls', namespace='multi_token_auth')),
...
]
The following endpoints are provided:
login
- takes username and password; on success an auth token is returnedlogout
pre_auth(username, password)
- Fired when an authentication (login) is startingpost_auth(user)
- Fired on successful auth
See folder tests/. Basically, all endpoints are covered with multiple unit tests.
Use this code snippet to run tests:
pip install tox
tox
If you want to use a cache for the session store, you can install django-memoize and add 'memoize'
to INSTALLED_APPS
.
Then you need to use CachedMultiTokenAuthentication
instead of MultiTokenAuthentication
.
pip install django-memoize
If your project uses an older verison of Django or Django Rest Framework, you can choose an older version of this project.
This Project | Python Version | Django Version | Django Rest Framework |
---|---|---|---|
1.4.* | 3.6+ | 2.2+, 3.2+ | 3.9, 3.10, 3.11, 3.12 |
1.3.* | 2.7, 3.4+ | 1.11, 2.0+ | 3.6, 3.7, 3.8 |
1.2.* | 2.7, 3.4+ | 1.8, 1.11, 2.0+ | 3.6, 3.7, 3.8 |
Make sure to use at least DRF 3.10
when using Django 3.0
or newer.
All releases should be listed in the releases tab on github.
See CHANGELOG.md for a more detailed listing.
This project is published with the BSD 3 Clause License. See https://choosealicense.com/licenses/bsd-3-clause-clear/ for more information about what this means.