Django没有认出我的令牌?

时间:2015-08-28 16:43:42

标签: django ember.js django-rest-framework django-rest-auth

我在后端使用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接受了那个令牌并且知道我是谁?我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

尝试类似

的内容
from rest_framework import authentication
class TokenAuthView(APIView):
    authentication_classes = (authentication.TokenAuthentication,)

然后,

class CurrentUserView(TokenAuthView)