django - 如何让 self.request.user 返回附加到令牌的用户?
问题描述
我在 Django Rest Framework 中使用令牌身份验证,并将令牌传递到我的请求的标头中。此令牌附加到用户。我将如何做到这一点,以便在调用“self.request.user”时返回请求中附加到令牌的用户?
如果做不到这一点,更具体地说,我需要某种方式来更改我认为的以下“perform_create()”函数,以将“作者”设置为附加到令牌的用户。
perform_create() 函数当前:
def perform_create(self, serializer):
serializer.save(author = self.request.user)
我需要它,因此将“作者”设置为附加到标头中令牌的用户。
任何帮助将非常感激。
谢谢
编辑:我无法在此实现中使用基于会话的身份验证
解决方案
我使用完全相同的代码(在运行时进行类型检查)在令牌身份验证系统中获取用户模型,并且可以确认它是否有效。
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)
# ...
编辑:这在文档中得到进一步证实:
如果成功通过身份验证,
TokenAuthentication
则提供以下凭据。
request.user
将是一个 Django User 实例。request.auth
将是一个rest_framework.authtoken.models.Token
实例。
推荐阅读
- redis - Airflow 2.0 - 即使池插槽可用,任务仍处于排队状态
- blockchain - 使用 Solidity 代码执行交易时面临的问题
- python - 大量数据的功率谱分析
- c# - 在外部窗口中按名称按钮检测按钮的焦点
- python - 如何使用 django-import-export 获取嵌套的 json 导出?
- javascript - setTimeout 中的多个状态更新
- javascript - 我需要一些关于 html css 我们的服务页面的帮助
- javascript - 切换的替代方案,在javascript中循环多个条件
- django-forms - Django ModelAdmin 表单表单验证
- python - 问题解决:ValueError:无法渲染缺少任何几何图形的对象:类型特征