如何使用令牌身份验证以及模型身份验证后端

时间:2019-08-30 19:01:54

标签: python-3.x authentication django-rest-framework python-requests django-rest-auth

我有两个Django项目,都使用 django.contrib.auth.backends.ModelBackend。进行身份验证。

出于某种目的,我必须在内部集成两个项目,为此我使用了令牌身份验证。 在两个项目中都创建了令牌,并用于验证请求。

但是,如果请求被django.contrib.auth.backends.ModelBackend授权或包含有效的Authorization Token

,我有一些代码需要满足请求

第一项目设置的一部分。

AUTHENTICATION_BACKENDS = (
        'django.contrib.auth.backends.ModelBackend',
        )

REST_FRAMEWORK = {
        'DEFAULT_PARSER_CLASSES': (
            'rest_framework.parsers.JSONParser',
            ),

        'DEFAULT_AUTHENTICATION_CLASSES': (
           'rest_framework.authentication.TokenAuthentication',
           )
        }

第二个项目设置的一部分。py:

AUTHENTICATION_BACKENDS = (
        'django.contrib.auth.backends.ModelBackend',
        )

REST_FRAMEWORK = {

        'DEFAULT_AUTHENTICATION_CLASSES': (
            'rest_framework.authentication.TokenAuthentication',
            'rest_framework.authentication.SessionAuthentication',
            )

        }

我尝试使用

"""
CustomizedViewSet has inherited mixins, GenericViewSet
"""
class OrderViewSet(CustomizedViewSet):
    queryset = Order.objects.all()
    serializer_class = OrderSerializer
    permission_classes = (IsAuthenticated,)
    authentication_classes = (TokenAuthentication,)

当我使用有效的csrftoken and sessionid请求网址而没有Authentication Token的网址时

未经授权的HTTP 401

{
    "detail": "Authentication credentials were not provided."
}

是否可以使用两种身份验证方法

(IsAuthenticated and TokenAuthentication) 在视图集上?

0 个答案:

没有答案