为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕码人8056858 2024-01-15 21:44:59
我们可以在Django的Token Auth中创建自定义的token吗?目前,我们正在创建一个超级用户并为该超级用户生成一个令牌。但有多种环境,我们希望所有环境的令牌都保持相同。因此,需要一个自定义的token。例如,如果我们使用 Token Auth 创建令牌REST_FRAMEWORK = {    'DEFAULT_AUTHENTICATION_CLASSES': [        'rest_framework.authentication.TokenAuthentication',    ],}我们首先创建一个超级用户,然后使用 django-admin 创建一个令牌。Authorization:Token 8b000baba908hh7cf0618d492896e7b4bd6c9ce3在这里,我想定义我自己的令牌,它将保存在同一个表中。
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

如果我正确理解您的问题,您希望在许多环境(不同的服务器)中为超级用户使用相同的令牌吗?如果这是真的,那么您可以尝试重写自动创建令牌的方法。

如何生成令牌: https://www.django-rest-framework.org/api-guide/authentication/#generate-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-de Couple 包将其作为环境变量处理。


查看完整回答
反对 回复 2024-01-15
  • 1 回答
  • 0 关注
  • 44 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信