質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Q&A

解決済

1回答

1247閲覧

django-axesを導入するとJson Web Tokenを利用したログイン認証が失敗する。

sasaki0628

総合スコア106

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

0グッド

0クリップ

投稿2022/11/18 09:38

編集2022/11/21 00:26
class TEST(views.APIView): permission_classes = [IsAuthenticated] def post(self,request,*args,**kwargs): ID = self.request.data['username'] PW = self.request.data['password'] user = authenticate(username=ID, password=PW) login(self.request,user) return Response('OK')

Django REST frameworkにてデフォルトのユーザーモデルに対してログイン処理をするAPIを作成し、POST送信時にJWT認証を利用してログイン処理を行っています。このAPIは問題なく機能しています。更にdjango-axesを導入し、このAPIを利用したいと思いました。しかし、

user = authenticate(username=ID, password=PW)

の箇所で以下のエラーメッセージが出力されました。

Exception Type: AxesBackendRequestParameterRequired
Exception Value: AxesBackend requires a request as an argument to authenticate

requestが必要、と言われていますが、どのようにして修正すればよいでしょうか。

▽追記
JWT認証をしてからログイン認証をするのはおかしいと思われるので、permission_classes = [IsAuthenticated] をコメントアウトし、ヘッダーにJWTをつけないように修正しました。エラーメッセージは出力されなくなりましたが、**{"detail":"認証情報が含まれていません。"}**のエラーメッセージが出力され、ログインができなくなりました。引き続き調べます。

現在の状況

  1. AXES_ENABLED = True にしている
  2. ブラウザから入力されたusernameとpasswordをもとにJWTを取得
  3. JWT取得後、ログイン処理のPOSTを送信(ヘッダーにJWTを付加しない)
  4. 認証情報が含まれていない、というエラーメッセージがレスポンスされ、ログインができない

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

▽追記の修正を実施後、認証情報が含まれていないというエラーメッセージが出力されていましたが、更新に時間がかかっていたようで、時間が経つと表示されなくなりました。django-axesも正常に起動しているように見えます。

投稿2022/11/21 01:36

sasaki0628

総合スコア106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問