Reputation: 6800
Can we create a self-defined token in the Token Auth in Django?
Currently, we are creating a super-user and generating a token for that super-user. But there are several environments and we want to keep the token same for all environments. Hence, a self-defined token is needed.
For example, if we create token using Token Auth
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
}
we first create a superuser, then we create a token using django-admin.
Authorization:Token 8b000baba908hh7cf0618d492896e7b4bd6c9ce3
Here, I want to define my own token which will be saved in the same table.
Upvotes: 2
Views: 4962
Reputation: 5839
If I understand correctly your question, you would like to have the same token for superuser in many environments (different servers)? If that's true, then you can try to override the method for automatic creation the tokens.
How to generate the tokens: https://www.django-rest-framework.org/api-guide/authentication/#generating-tokens
DRF AuthToken code https://github.com/encode/django-rest-framework/blob/master/rest_framework/authtoken/models.py
Based on the above the example code can be (not tested):
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_auth_token(sender, instance=None, created=False, **kwargs):
if created:
if instance.is_superuser:
Token.objects.create(user=instance, key="superuser_key")
else:
Token.objects.create(user=instance) # use generated key
Important Please do not hardcode the token in the code, you can use for example python-decouple package to handle it as env variable.
Upvotes: 1