django rest frameworkで認証したアカウント情報を返す時に 401と返って来て詰まった箇所。


現在djangoで作ったポートフォリオをspaに変換して作っていて、
最近ようやく思った挙動をしてくれたので、それでかなり詰まった箇所を備忘録として書いていこうと思います。

開発環境

@nuxt/cli v2.13.3

requirements.txt
Django>=2.0,<3.0
psycopg2>=2.7,<3.0
Pillow>=7.1.2
djangorestframework>=3.11.0
django-filter>=0.11.0
django-cors-headers>=3.0.0
djangorestframework-jwt>=1.11.0
djoser == 2.0.1
djangorestframework-simplejwt>=4.4.0

コンポーネントでログインページを作り、作ったページのurlをconfig.jsに渡しました。

nuxt.config.js
axios: {

      baseURL: "http://0.0.0.0:8000"
      //proxy: true
    },


auth: {
      redirect: {
        login: { url: '/chat', method: 'post', propertyName: 'token' },
        logout: { url: '/', method: 'post' },
        callback: false,  
        home: '/chat',      
      },
      strategies: {
        local: {
          endpoints: {
            login: { url: '/api/login/', method: 'post', propertyName: 'token' },
            user: { url: '/api/auth/users/me/', method: 'get', propertyName: false },
            logout: false
          },
        }
      }
    }
error
get http://0.0.0.0:8000/api/auth/users/me/ 401

と出てくるので色々模索したら

どうやらapiの方に問題があったみたいです。

https://stackoverflow.com/questions/33265812/best-http-authorization-header-type-for-jwt
このページによると

クライアントがアクセストークン(JWTまたはその他のトークン)を送信するのに最適なHTTPヘッダーは> Authorization、Bearer認証スキームを含むヘッダーです。

このスキームはRFC6750で説明されています。

とのこと。

settings.py
JWT_AUTH = {
    'JWT_VERIFY_EXPIRATION': False,
    'JWT_AUTH_HEADER_PREFIX': 'Bearer', #変更前はJWT
}

と直したら動きました。