Django Rest Framework JWT Auth

KeykoYume

JWTログイン後にリクエストを投稿/取得する際に問題が発生しました。(私はdjangorestframework-jwtライブラリを使用しています)ユーザーが正常にログインすると、アプリはjsonトークンを返しますが、このトークンを次のリクエストに使用すると、

{
    "detail": "Authentication credentials were not provided."
}

settings.py

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    ),
}

JWT_AUTH = {
    'JWT_ALLOW_REFRESH': True,
    'JWT_EXPIRATION_DELTA': datetime.timedelta(hours=1),
    'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),
}

ログインビュー

def post(self, request, format=None):

    if not request.data:
        return Response({'Error': "Please provide username/password"},  status=status.HTTP_400_BAD_REQUEST)

    username = request.data['username']
    password = request.data['password']

    try:
        user = User.objects.get(email=username, password=password)
    except User.DoesNotExist:
        return Response({'Error': "Invalid username/password"}, status=status.HTTP_400_BAD_REQUEST)

    if user:
        payload = {
            'id': user.id,
            'email': user.email,
            'first_name': user.first_name
        }

        jwt_token = jwt.encode(payload, "SECRET_KEY")  # to be changed

        return Response({'token': jwt_token}, status=status.HTTP_200_OK)

その後、他のすべてのビューに含まれています

 authentication_class = (JSONWebTokenAuthentication,)
 permission_classes = (IsAuthenticated,)

postmanとcurlの両方でテストしましたが、同じエラーが発生します。ヘッダー形式にエラーがあるのか​​、それともsmthがあるのか​​わからないので、私は行方不明です。どんな助けでも大歓迎です!

ここに画像の説明を入力してください

編集:設定をに変更しました

'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
    'rest_framework.authentication.SessionAuthentication',
    'rest_framework.authentication.BasicAuthentication',
),

しかし今私はそれを得る

{
    "detail": "Error decoding signature."
}

編集:問題は、jwt_token = jwt.encode(payload, 'SECRET_KEY')認識されないトークンを返す可能性があることだと思います...それによって生成されたトークンを使用する場合、obtain_jwt_token任意のエンドポイントにクエリを実行できます。誰かがこれを説明できますか?

編集:に変更しjwt_token = jwt_encode_handler(payload)、設定ファイルにJWT_SECRET_KEY(jwtにログインした後に受け取ったトークンを確認すると、それは確かに正しいペイロードとシークレットを持つ正しいトークンです)が含まれていますが、それでも認識されません"detail": "Invalid signature."

KeykoYume

私はなんとか問題を解決することができました。ユーザーを認証するとき、私はuser以前に作成したカスタムテーブルと照合していました。これはdjangoのauth_userテーブルとは異なります。カスタムユーザーテーブルを使用するようにdjangoの設定を変更した後、認証からのトークンを使用して他のリクエストでも機能しました。

AUTH_USER_MODEL = 'main.User'

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

TOP 一覧

  1. 1

    Python / SciPyのピーク検出アルゴリズム

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  4. 4

    androidsoongビルドシステムによるネイティブコードカバレッジ

  5. 5

    ZScalerと証明書の問題により、Dockerを使用できません

  6. 6

    Reactでclsxを使用する方法

  7. 7

    VisualStudioコードの特異点/ドッカー画像でPythonインタープリターを使用するにはどうすればよいですか?

  8. 8

    二次導関数を数値計算するときの大きな誤差

  9. 9

    Ansibleで複数行のシェルスクリプトを実行する方法

  10. 10

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  11. 11

    ビュー用にサイズ変更した後の画像の高さと幅を取得する方法

  12. 12

    Three.js indexed BufferGeometry vs. InstancedBufferGeometry

  13. 13

    __init__。pyファイルの整理中に循環インポートエラーが発生しました

  14. 14

    三項演算子良い練習の代わりとしてOptional.ofNullableを使用していますか?

  15. 15

    エンティティIDを含む@RequestBody属性をSpringの対応するエンティティに変換します

  16. 16

    Spring Boot Filter is not getting invoked if remove @component in fitler class

  17. 17

    値間の一致を見つける最も簡単な方法は何ですか

  18. 18

    reCAPTCHA-エラーコード:ユーザーの応答を検証するときの「missing-input-response」、「missing-input-secret」(POSTの詳細がない)

  19. 19

    Rパッケージ「AppliedPredictiveModeling」のインストール中にエラーが発生しました

  20. 20

    画像変更コードを実行してもボタンの画像が変更されない

  21. 21

    好き/愛の関係のためのデータベース設計

ホットタグ

アーカイブ