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