gpt4 book ai didi

django - django-rest-framework 的非用户基础 TokenAuthentication

转载 作者:行者123 更新时间:2023-12-04 12:47:44 27 4
gpt4 key购买 nike

我正在尝试使用 token 身份验证创建一个 api。我的问题是我不希望 token 与用户帐户相关联,而是与帐户模型相关联。

例如:

class Account(models.Model):
slug = models.SlugField()
name = models.CharField(max_length=255)
website = models.URLField(blank=True, default='')
members = models.ManyToManyField(User, through='AccountMember')

class AccountMember(models.Model):
ADMIN = 1
MANAGER = 2
MEMBER = 3
ROLES = (
(ADMIN, 'administrator'),
(MANAGER, 'manager'),
(MEMBER, 'member'),
)
user = models.ForeignKey(User)
account = models.ForeignKey(Account)
role = models.PositiveSmallIntegerField(choices=ROLES)
date_joined = models.DateField(auto_now_add=True)

class Token(models.Model):
"""
The default authorization token model.
"""
key = models.CharField(max_length=40, primary_key=True)
account = models.ForeignKey(Account, related_name='auth_tokens')
only_allowed_ips = models.BooleanField(default=False)
ip_list = models.TextField(default='', blank=True)
created = models.DateTimeField(auto_now_add=True)

如您所见,有多个用户与一个帐户相关联,因此将 token 分配给他们将毫无用处。

我还希望能够向一个帐户添加多个 token 。

有谁知道我可以向这样的系统添加身份验证/权限的最佳方式吗?

最佳答案

您必须复制以下类:

django.contrib.auth.backends.ModelBackend:检查身份验证和权限
django.contrib.auth.middleware.AuthenticationMiddleware:设置与请求关联的帐户

可能您必须创建另一个 django.contrib.auth.models.Permission 来存储您的帐户相关权限

关于django - django-rest-framework 的非用户基础 TokenAuthentication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22586048/

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