我正在为使用Django Restframework的站点设置令牌认证,并且需要能够让用户下载他们的令牌,但是问题是他们只能够一次下载他们的令牌(类似于亚马逊AWS模型)。检查用户是否在Django Restframework中被分配了令牌
换句话说;有没有一种原生的方式来检查用户是否已在restframework中分配了一个令牌?
我正在为使用Django Restframework的站点设置令牌认证,并且需要能够让用户下载他们的令牌,但是问题是他们只能够一次下载他们的令牌(类似于亚马逊AWS模型)。检查用户是否在Django Restframework中被分配了令牌
换句话说;有没有一种原生的方式来检查用户是否已在restframework中分配了一个令牌?
,你可以这样做:
from rest_framework.authtoken.models import Token
from django.conf import settings
token = Token.objects.create(user=settings.AUTH_USER_MODEL)
现在你可以检查,如果你给用户有一个令牌:
user_with_token = Token.objects.get(user=user)
,如果你只是想看看,如果用户有一个令牌:
is_tokened = Token.objects.filter(user=user).exist() # Returns a boolean
如果条目存在,则意味着用户拥有分配给它的令牌。 参考:HERE
请按照该文档确保您的数据库已迁移。
尝试使用django信号自动创建用户令牌,类似于您的模型文件。
@receiver(post_save, sender=User)
def create_auth_token(sender, instance=None, created=False, **kwargs):
if created:
Token.objects.create(user=instance)
到目前为止您尝试了什么? –
我已经尝试通过查看文档来查看是否有任何其他Token.object函数,而不是创建和get_or_create,但无法找到任何东西。源潜水也没有给我任何东西。 我的目标是避免尝试使用原生解决方案失败的令牌授权的try catch块(尝试catch块方法存在太多可能的问题)。 – aeusman