如何在 Django Token Auth 中创建自定义令牌
How to create self defined token in Django Token Auth
能否在Django的Token Auth中创建一个自定义的token?
目前,我们正在创建超级用户并为该超级用户生成令牌。但是有多种环境,我们希望所有环境的令牌都相同。因此,需要一个自定义的token。
例如,如果我们使用 Token Auth 创建令牌
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
}
我们首先创建一个超级用户,然后我们使用 django-admin 创建一个令牌。
Authorization:Token 8b000baba908hh7cf0618d492896e7b4bd6c9ce3
在这里,我想定义我自己的令牌,将保存在同一个table。
如果我对你的问题理解正确,你想在许多环境(不同的服务器)中为超级用户使用相同的令牌吗?如果是这样,那么您可以尝试覆盖自动创建令牌的方法。
如何生成令牌:
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 包将其作为环境变量处理。
能否在Django的Token Auth中创建一个自定义的token?
目前,我们正在创建超级用户并为该超级用户生成令牌。但是有多种环境,我们希望所有环境的令牌都相同。因此,需要一个自定义的token。
例如,如果我们使用 Token Auth 创建令牌
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
}
我们首先创建一个超级用户,然后我们使用 django-admin 创建一个令牌。
Authorization:Token 8b000baba908hh7cf0618d492896e7b4bd6c9ce3
在这里,我想定义我自己的令牌,将保存在同一个table。
如果我对你的问题理解正确,你想在许多环境(不同的服务器)中为超级用户使用相同的令牌吗?如果是这样,那么您可以尝试覆盖自动创建令牌的方法。
如何生成令牌: 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 包将其作为环境变量处理。