Django Rest Framework使用自定义模型进行自定义身份验证?

时间:2016-03-10 21:05:30

标签: python django authentication django-rest-framework

设置非常简单:我想要根据我创建的模型和字段来验证令牌,而不是用户。这里的概念是组织将被发布一个令牌,而不是用户,因为这个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用于令牌身份验证的选项?

0 个答案:

没有答案