我在后端使用Django Rest Framework,在前端使用ember-cli应用程序。身份验证工作正常,但授权中某处似乎存在漏洞。
# settings.py
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.AllowAny',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
}
# views.py
class CurrentUserView(APIView):
"get the data for the current authenticatd user"
permission_classes = (IsAuthenticated,)
def get_queryset(self, request):
queryset = User.objects.filter(username=request.user.username)
return queryset
def get(self, request):
serializer = UserSerializer(request.user)
return Response(serializer.data)
当我向此端点/v1/me/
发出请求时,它会以403响应。当我取消权限类时,我会回来{"id":null,"username":"","is_active":false}
,因为它不知道我是谁。< / p>
此外,当我使用可浏览的API时,/v1/me
网址正常工作。
在Ember方面,我使用我的帐户登录并正确地取回我的令牌。在请求中,Authorization: Token asdf1234asdf1234asdf1234
正在通过。我会认为Django接受了那个令牌并且知道我是谁?我错过了什么吗?
答案 0 :(得分:0)
尝试类似
的内容from rest_framework import authentication
class TokenAuthView(APIView):
authentication_classes = (authentication.TokenAuthentication,)
然后,
class CurrentUserView(TokenAuthView)