设置非常简单:我想要根据我创建的模型和字段来验证令牌,而不是用户。这里的概念是组织将被发布一个令牌,而不是用户,因为这个API不是由用户直接使用,但我将通过组织auth / silo数据。所有这一切,我正在努力尝试将其映射出来,因为我认为为DRF提供的auth策略似乎依赖于正在创建的auth.user。
以下是我想做的一个例子(基本上是从文档中删除的):
from api.models import Organization
from rest_framework import authentication
from rest_framework import exceptions
class OrgAuthentication(authentication.BaseAuthentication):
def authenticate(self, request):
token = request.META.get('AUTH_TOKEN')
if not token:
raise exceptions.AuthenticationFailed("Token missing")
try:
org = Organization.objects.get(auth_token=token)
print(org)
except Organization.DoesNotExist:
raise exceptions.AuthenticationFailed("Token not found")
return (org, None)
在快速强力测试中,这失败了,因为我的组织模型没有is_authenticated属性,但我也不确定我是否可以执行任何操作,因为我完全绕过用户身份验证设置。我认为我可以注册每个组织作为用户,然后使用令牌设置来完成所有这些,但这似乎不仅破坏用户模块,如果我们想要使用它,以后再工作,但也似乎很奇怪。
对于不是标准用户模块的内容,是否有DRF用于令牌身份验证的选项?