如何在 Django Token Auth 中创建自定义令牌

我们可以在Django的Token Auth中创建自定义的token吗?


目前,我们正在创建一个超级用户并为该超级用户生成一个令牌。但有多种环境,我们希望所有环境的令牌都保持相同。因此,需要一个自定义的token。


例如,如果我们使用 Token Auth 创建令牌


REST_FRAMEWORK = {

    'DEFAULT_AUTHENTICATION_CLASSES': [

        'rest_framework.authentication.TokenAuthentication',

    ],

}

我们首先创建一个超级用户,然后使用 django-admin 创建一个令牌。


Authorization:Token 8b000baba908hh7cf0618d492896e7b4bd6c9ce3

在这里,我想定义我自己的令牌,它将保存在同一个表中。


慕码人8056858
浏览 49回答 1
1回答

一只甜甜圈

如果我正确理解您的问题,您希望在许多环境(不同的服务器)中为超级用户使用相同的令牌吗?如果这是真的,那么您可以尝试重写自动创建令牌的方法。如何生成令牌: https://www.django-rest-framework.org/api-guide/authentication/#generate-tokensDRF AuthToken代码 https://github.com/encode/django-rest-framework/blob/master/rest_framework/authtoken/models.py基于上面的示例代码可以是(未测试):@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 重要请不要在代码中对令牌进行硬编码,您可以使用例如 python-de Couple 包将其作为环境变量处理。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python