LoginSignup
3
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-09-17

現在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
}

と直したら動きました。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1