gpt4 book ai didi

django - 如何在 Django Rest Framework Authtoken 中的 token 模型中添加字段

转载 作者:行者123 更新时间:2023-12-01 13:43:39 26 4
gpt4 key购买 nike

我正在使用 rest_framework.authtoken.models token 。我可以看到 3 个字段,它们是 key、c​​reated_at 和 user_id。

应用后台:

我使用 chrome 应用程序作为应用程序的客户端,我想使用 token 身份验证来连接我在 django rest 框架中的 API。我想将 user_id 和 company_id 存储在 中authtoken_token table 。所以我可以只在 chrome app localstorage 中存储 token key ,

enter image description here

  • 我的问题是如何向该模型添加像 company_id 这样的额外字段?我找不到任何关于此的文档或文章。
  • 我也在 this article 中得到了杰米的回答对模型进行子类化,但我不知道如何。

  • 谢谢!

    最佳答案

    定义您自己的身份验证方法:
    设置.py

        'DEFAULT_AUTHENTICATION_CLASSES': (
    'my_project.my_app.authentication.myOwnTokenAuthentication',
    ),
    身份验证.py
    from rest_framework.authentication import TokenAuthentication
    from my_project.my_app.models.token import MyOwnToken

    class MyOwnTokenAuthentication(TokenAuthentication):
    model = MyOwnToken
    模型.py
    import binascii
    import os

    from django.db import models
    from django.utils.translation import ugettext_lazy as _
    from my_project.companies.models import Company


    class MyOwnToken(models.Model):
    """
    The default authorization token model.
    """
    key = models.CharField(_("Key"), max_length=40, primary_key=True)

    company = models.OneToOneField(
    Company, related_name='auth_token',
    on_delete=models.CASCADE, verbose_name="Company"
    )
    created = models.DateTimeField(_("Created"), auto_now_add=True)

    class Meta:
    verbose_name = _("Token")
    verbose_name_plural = _("Tokens")

    def save(self, *args, **kwargs):
    if not self.key:
    self.key = self.generate_key()
    return super(MyOwnToken, self).save(*args, **kwargs)

    def generate_key(self):
    return binascii.hexlify(os.urandom(20)).decode()

    def __str__(self):
    return self.keyDefine you own authentication method:

    关于django - 如何在 Django Rest Framework Authtoken 中的 token 模型中添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37669943/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com