DRF

2017-12-13 14 views
3

をフェッチからAPIViewの中でAnonymousUserを返すからrequest.userは私のようなAPIViewを構築してきたAPI呼び出し中にログイン:私は使用してそれにコールを作ってるんだ DRF

class CustomAPIView(APIView): 
    def get(self, request, *args, **kwargs): 
     if not request.user or not request.user.is_authenticated(): 
      return Response("User not logged in", status=status.HTTP_403_FORBIDDEN) 
    # Other stuff 

そして、私のHTMLテンプレートで

fetchAPI:

fetch('/api/request/url/', {method: 'get'}) 
      .then(
      // Process info); 

私はこのすべてからログインしていますが、私はいつもAnonymousUserを返すAPIView中からrequest.user変数と403応答で迎えされています。しかし、私がしようとすると、手動ですべての権利を正しく動作apiのURLを訪問してください。

誰かが迷っていることを指摘できますか?

ありがとうございます。

+0

あなたの認証メカニズムは何を使うのか?それはトークンベースの認証かセッション認証ですか?あなたの設定DEFAULT_AUTHENTICATION_CLASSESをここに置くことができますか?フェッチの問題は、それがサーバーにCookieを送信せず、結果としてCookieベースの認証に失敗することです –

答えて

1

fetch apiの問題点は、デフラグではサーバーにCookieを送信しないことです。サイトは、ユーザーのセッションを維持 に依存している場合、デフォルトで

、フェッチはクッキーを送信するために(未認証の要求で、その結果、サーバから を任意のクッキーを送信または受信しません、 オプションのinitの資格情報を設定する必要があります)。

だから、あなたは資格証明を設定する必要があります。「同一生成元」をごフェッチ要求に、クロスオリジン・リクエストのための

fetch('/api/request/url/', {method: "GET", credentials: 'same-origin'}) 
      .then(
      // Process info); 

credentials: 'include'