我们可以在Django的Token Auth中创建自定义令牌吗?
当前,我们正在创建一个超级用户并为该超级用户生成令牌。但是有几种环境,我们希望在所有环境中都保持相同的令牌。因此,需要一个自定义令牌。
例如,如果我们使用令牌验证创建令牌
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
}
我们首先创建一个超级用户,然后使用django-admin创建一个令牌。
Authorization:Token 8b000baba908hh7cf0618d492896e7b4bd6c9ce3
在这里,我想定义自己的令牌,该令牌将保存在同一张表中。
答案 0 :(得分:1)
如果我正确理解您的问题,那么您想在许多环境(不同服务器)中为超级用户使用相同的令牌吗?如果是这样,那么您可以尝试覆盖自动创建令牌的方法。
如何生成令牌: https://www.django-rest-framework.org/api-guide/authentication/#generating-tokens
DRF 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-decouple软件包将其作为env变量处理。