JWT 身份驗證使用 SimpleJWT 在 Django Rest Framework 中返回 AnonymousUser

布拉坎·阿克索伊

我打開這個問題作為最後的手段。

我正在學習 JWT 並希望在我的 django 應用程序上實現它。我在基本身份驗證和令牌身份驗證方面沒有任何問題,但 JWT 不會對我的用戶進行身份驗證...

這是我的settings.py:

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
        'api.permissions.AdminOrTeacherOnly'
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ]
}

這是我的觀點:

class StudentList(APIView):

    authentication_classes = []
    permission_classes = [AdminOrTeacherOnly]

    def get(self, request, format=None):
        students = Student.objects.all()
        serializer = StudentListSerializer(students, many=True)

        if not serializer.data:
            return Response(status=status.HTTP_204_NO_CONTENT)

        return Response(serializer.data, status=status.HTTP_200_OK)

這是我的 AdminOrTeacherOnly 權限類:

class AdminOrTeacherOnly(permissions.BasePermission):
    """
    Object-level permission to only allow teachers of a student to edit.
    Assumes the model instance has an `owner` attribute.
    """
    message = 'Only admin or teacher can edit student detail.'

    def has_permission(self, request, view):
        # Only teacher and/or admin user will be able to,
        # edit and/or list this view.
        is_staff = bool(request.user and request.user.is_staff)
        is_teacher_group = str(request.user.groups.all().first()) == 'teacher'

        return is_staff or is_teacher_group 

我能夠成功獲取刷新和訪問令牌:

在此處輸入圖片說明

然後,我將其添加Headers如下並發送請求:

在此處輸入圖片說明

在調試器上,當它進入權限類時:

在此處輸入圖片說明

在這裡, request.user 返回 <django.contrib.auth.models.AnonymousUser object at 0x104f5afd0>

我不知道我錯過了什麼。查看了相關問題,但找不到有關 SimpleJWT 的任何有用信息。

一個保羅

你在authentication_classes這裡覆蓋

class StudentList(APIView):
    authentication_classes = []

添加JWTAuthentication到該列表中。

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

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

編集
0

コメントを追加

0

関連記事

Vue js Django Rest FrameworkとJWTユーザー認証(匿名ユーザーの取得)simplejwt simplejwt

Django Rest Framework JWT Auth

Logout Django Rest Framework JWT

帶有 Django Rest Framework 的 Python 請求 - “詳細信息”:“未提供身份驗證憑據”

Django Rest Framework:驗證 HiddenField CurrentUserDefault 屬性

Django + django-rest-framework-simplejwtプロテクトビュー

django-rest-framework-simplejwtは更新を無効にします

Django Rest FrameworkのIsAuthenticated()メソッドがAnonymousUserで失敗する

如何使用 Django 身份驗證

Django Rest Framework-Request.userは常にAnonymousUserであり、request.POSTは空です

APIViewへのrest_framework_simplejwt投稿

Handling JWT Authentication and Soft Deleted Users in Django Rest Framework

Django rest 框架:創建用戶請求身份驗證

使用 PKCE 的 Azure DevOps REST API 身份驗證

使用 Firebase 匿名身份驗證作為應用程序中的唯一身份驗證方法

第一個 django rest api 調用返回 request.user 作為 AnonymousUser 但進一步調用返回正確的用戶

Django Rest Framework 中的常用模型

rest_framework_simplejwtトークンのExpまたはiat時間

Django Rest Framework JWTユニットテスト

django-rest-frameworkでのJWT認証の問題

DRF:django-rest-framework-jwtをDjoserに統合する方法

JSON:APIとdjango-rest-framework-json-apiおよびJWT

不要在測試中驗證 JWT 過期

在 NESTJS 的裝飾器中驗證 JWT

Firestore REST API 使用 http-client 發出經過身份驗證的請求

使用 Qlik Data Catalyst REST API 進行身份驗證

Django Rest FrameworkでJWTトークンを使用するにはどうすればよいですか?

Django Rest Framework、JWT、Vuejsを使用して認証されたユーザー情報を取得する

Django Rest FrameworkでJWTまたは基本トークン認証を使用する必要がありますか?

TOP 一覧

  1. 1

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

  2. 2

    CSSのみを使用して三角形のアニメーションを作成する方法

  3. 3

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

  4. 4

    ドロップダウンリストで選択したアイテムのQComboBoxスタイル

  5. 5

    別のホストからTomcat Managerアプリにアクセスする

  6. 6

    PyCharmリモートインタープリターはプロジェクトタブにサイトパッケージのコンテンツを表示しません

  7. 7

    Windows 10でのUSB入力デバイスの挿入/取り外しの検出

  8. 8

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

  9. 9

    MLでのデータ前処理の背後にある直感

  10. 10

    useRefに反応してコンポーネントをスクロールして表示する

  11. 11

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  12. 12

    パンダは異なる名前の列に追加します

  13. 13

    PictureBoxで画像のブレンドを無効にする

  14. 14

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  15. 15

    Pythonを使用して、リストからデータを読み取り、特定の値をElasticsearchにインデックス付けするにはどうすればよいですか?

  16. 16

    LinuxでPySide2(Qt for Python)をインストールするQt Designerはどこにありますか?

  17. 17

    Material-UIでTextFieldエラーの色を条件付きでオーバーライドする方法

  18. 18

    goormIDEは、ターミナルがロードするデフォルトプロジェクトを変更します

  19. 19

    MatplotlibまたはSeabornを使用して、グループ化されたデータから複数のプロットを生成するにはどうすればよいですか?

  20. 20

    Luaの文字列から特定の特殊文字を削除するにはどうすればよいですか?

  21. 21

    Flutterにファイルピッカープラグインを追加するにはどうすればよいですか?

ホットタグ

アーカイブ