request.user.is_authenticated 在 Django 休息框架中总是假的
request.user.is_authenticated is always false in Django rest framework
我在 drf 中使用 allauth 进行身份验证。我能够注册新用户并使用凭据登录。
登录 api return 响应如下:
{
"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")
但这总是return未通过身份验证
我的 api 通话看起来像这样
这是我 settings.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',
]
您似乎在使用功能视图?如果是这样,您是否向视图添加了 @api_view
装饰器?
如果是,您是否添加了 authentication_classes=[TokenAuthentication]
关键字参数?这是使令牌 Auth 工作的必要条件。
或者在 settings.py
中设置以下内容:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication'
]
}
我在 drf 中使用 allauth 进行身份验证。我能够注册新用户并使用凭据登录。 登录 api return 响应如下:
{
"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")
但这总是return未通过身份验证
我的 api 通话看起来像这样
这是我 settings.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',
]
您似乎在使用功能视图?如果是这样,您是否向视图添加了 @api_view
装饰器?
如果是,您是否添加了 authentication_classes=[TokenAuthentication]
关键字参数?这是使令牌 Auth 工作的必要条件。
或者在 settings.py
中设置以下内容:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication'
]
}