0

我在后端使用 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},因为它不知道我是谁。

此外,当我使用可浏览 API 时,/v1/meURL 可以正常工作。

在 Ember 方面,我使用我的帐户登录并正确取回我的令牌。在请求Authorization: Token asdf1234asdf1234asdf1234中正在通过。我会认为 Django 接受了那个令牌并知道我是谁?我错过了什么吗?

4

2 回答 2

0

在设置中您需要添加 auth_token。

# settings.py
   INSTALLED_APP = ('rest_framework.authtoken',)

您不需要在每个视图上添加 authentication_classes。

于 2015-09-09T20:31:49.423 回答
0

尝试类似的东西

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

然后,

class CurrentUserView(TokenAuthView)
于 2015-08-28T21:55:09.953 回答