0

数日間、私はこのかなり単純な認証設定を機能させようとしてきました。

JSON Web トークン認証を行うために、Django REST プラグイン「django-rest-framework-jwt」を使用しています。

API を CURL すると、想定どおりに動作します。

ここに画像の説明を入力

ただし、私のAngularアプリケーションを介してリクエストを発行するとき; 「承認の詳細が提供されていません」という詳細を含む未承認のエラーが常に発生しています。ただし、リクエストをクロールすると、それが存在することが明確にわかります (リクエスト内のトークンは、CURL 内で使用したため、有効です ':

ここに画像の説明を入力

私が書いたインターセプターを介して認証ヘッダーを挿入しています。次のようになります。

 intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const auth = this.session.authorization;

    if (!auth) {
      return next.handle(req);
    } else {
      const newReq = req.clone({
        setHeaders: {
          Authorization: auth,
        },
      });

      return next.handle(newReq);
    }
  }

さらに、JWT_AUTH 設定の設定は次のように定義されます。

JWT_AUTH = {
    'JWT_ENCODE_HANDLER':
    'rest_framework_jwt.utils.jwt_encode_handler',

    'JWT_DECODE_HANDLER':
    'rest_framework_jwt.utils.jwt_decode_handler',

    'JWT_PAYLOAD_HANDLER':
    'rest_framework_jwt.utils.jwt_payload_handler',

    'JWT_PAYLOAD_GET_USER_ID_HANDLER':
    'rest_framework_jwt.utils.jwt_get_user_id_from_payload_handler',

    'JWT_RESPONSE_PAYLOAD_HANDLER':
    'auth.views.jwt_response_payload_handler',

    'JWT_SECRET_KEY': SECRET_KEY,
    'JWT_GET_USER_SECRET_KEY': None,
    'JWT_PUBLIC_KEY': None,
    'JWT_PRIVATE_KEY': None,
    'JWT_ALGORITHM': 'HS256',
    'JWT_VERIFY': True,
    'JWT_VERIFY_EXPIRATION': True,
    'JWT_LEEWAY': 0,
    'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=300),
    'JWT_AUDIENCE': None,
    'JWT_ISSUER': None,

    'JWT_ALLOW_REFRESH': True,
    'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(seconds=3600),

    'JWT_AUTH_HEADER_PREFIX': 'Bearer',
    'JWT_AUTH_COOKIE': None,
}

フレームワークの設定は次のとおりです。

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10,
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    ),
}

これに関する提案はありますか?ここで何が起こっているのかわかりません。

編集

[ネットワーク] タブのリクエスト/レスポンス ヘッダー:

ここに画像の説明を入力

4

1 に答える 1