我在后端使用 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/me
URL 可以正常工作。
在 Ember 方面,我使用我的帐户登录并正确取回我的令牌。在请求Authorization: Token asdf1234asdf1234asdf1234
中正在通过。我会认为 Django 接受了那个令牌并知道我是谁?我错过了什么吗?