我正在尝试为传入请求配置身份验证,但我无法理解实现它所需的步骤。
我已按照documentation
中提供的步骤操作首先,我编辑了setting.py
以获取身份验证设置:
INSTALLED_APPS = [
...,
'rest_framework',
'rest_framework.authtoken',
...,
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.TokenAuthentication',
)
}
在view.py
:
@csrf_exempt
def uuid_details(request, uuid):
if request.method == 'GET':
print "user: " + str(request.user) # user: AnonymousUser
因此,当我调用上面的rest API时,在上面一行中我输出为AnonymousUser
。根据我的理解,我应该收到经过身份验证的User
对象。
我能够检索令牌并将其传递给其余的API。
>>> Token.objects.get(user=user)
<Token: 95119884347cf000caab9d2596b9a18a9103f1db>
所以,我无法理解Django rest框架中的身份验证是如何工作的。
答案 0 :(得分:1)
看起来你有一个常规的Django视图,所以其余的框架认证代码都不会运行。
def uuid_details(request, uuid):
您可以使用api_view
装饰器将其转换为休息框架视图。
from rest_framework.response import Response
from rest_framework.decorators import api_view
@api_view(['GET'])
def uuid_details(request, uuid):
return Response({"message": "user: " + str(request.user)}
答案 1 :(得分:0)
两件事:
一旦修复了这两点,就应该有效。