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 に答える