web-dev-qa-db-ja.com

Django Rest FrameworkJWTトークンからユーザー名を取得する方法

私はDjango Rest Frameworkを使用しており、 REST Framework JWT Auth というサードパーティパッケージを含めました。ユーザー名/パスワードをに送信するとトークンが返されます。特定のルート。次に、特定のルートへのアクセス許可のためにトークンが必要です。ただし、トークンからユーザー名を取得するにはどうすればよいですか?パッケージのドキュメントをすべて調べ、StackOverflowを確認しました。これはJSON Webトークンであり、想定しています。 username = decode_token(token)のようなメソッドがありますが、そのようなメソッドは見つかりませんでした。

9
Gary Holiday

基本的にあなたはこれを行うことができます

username = request.user.username
3

私にとってはDjango(2.0.1)、djangorestframework(3.7.7)、djangorestframework-jwt(1.11.0)です。

トークンからユーザーを使用できるようにするには、次の手順を実行する必要がありました。

        token = request.META.get('HTTP_AUTHORIZATION', " ").split(' ')[1]
        print(token)
        data = {'token': token}
        try:
            valid_data = VerifyJSONWebTokenSerializer().validate(data)
            user = valid_data['user']
            request.user = user
        except ValidationError as v:
            print("validation error", v)

または、トークンに基づいてユーザーを設定するミドルウェアを作成することもできます。

ここでステップバイステップガイドを読むことができます: http://blog.sadafnoor.me/blog/a-Django-rest-framework-jwt-middleware-to-support-request-user/

5
sadaf2605