如何使 self.request.user return 用户附加到令牌?

How to make self.request.user return the user attached to token?

我在 Django Rest Framework 中使用令牌身份验证,并将令牌传递到我请求的 header 中。此令牌附加到用户。我将如何做到这一点,以便在调用 'self.request.user' 时,返回请求中附加到令牌的用户?

做不到这一点,更具体地说,我需要某种方法来更改我认为的以下 'perform_create()' 函数,而不是将 'author' 设置为附加到令牌的用户。

perform_create() 当前函数:

def perform_create(self, serializer):
    serializer.save(author = self.request.user)

我需要它,所以 'author' 设置为附加到 header 中令牌的用户。

如有任何帮助,我们将不胜感激。

谢谢

编辑:我无法在此实现中使用基于 session 的身份验证

我使用完全相同的代码(在运行时进行类型检查)在令牌身份验证系统中获取用户模型并可以确认它是否有效。

def perform_create(self, serializer: ModelSerializer) -> None:
    serializer.save(registrant=self.request.user)

registrant 是用户模型的外键:

# models.py
from django.conf import settings
from django.db import models

class Model(models.Model):
    # ...
    registrant = models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, blank=True, null=True)
    # ...

编辑: 这在 documentation:

中得到进一步证实

If successfully authenticated, TokenAuthentication provides the following credentials.

  • request.user will be a Django User instance.
  • request.auth will be a rest_framework.authtoken.models.Token instance.