在Django rest框架中request.user.is_authenticated始终为false

时间:2018-11-12 21:24:08

标签: django python-3.x django-rest-framework django-allauth

我正在使用allauth在drf中进行身份验证。我能够注册新用户并使用凭据登录。 登录API返回响应如下:

{
 "key" : "<some token>"
}

现在我还有1个API,其代码为

    from django.http import HttpResponse
    def lol(request):
        if request.user.is_authenticated:
            return HttpResponse("Authenticated")
        else:
            return HttpResponse("Not Authenticated")

但这总是返回未认证的 我的api调用看起来像这样enter image description here

这是我的设置中已安装应用的列表。py

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework.authtoken',
'rest_auth',
'django.contrib.sites',
'allauth',
'allauth.account',
'rest_auth.registration',

'api.user',
'api.activity',
]

1 个答案:

答案 0 :(得分:2)

似乎您正在使用功能视图?如果是这样,您是否向视图中添加了@api_view装饰器?

如果是,您是否添加了authentication_classes=[TokenAuthentication]关键字参数?必须使令牌Auth起作用。

可以在settings.py中设置以下内容:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication'
    ]
}