Djangoカスタム認証バックエンドはパスワードを取得する必要がありますか?
-
03-07-2019 - |
質問
私の大学が認証を処理する方法は次のとおりです。ユーザーをWebサイトにリダイレクトし、ユーザー名とパスワードを入力すると、クエリ文字列で渡されたユーザー名とログインキーでリダイレクトされます。ユーザーを取得したら、大学のデータベースでストアドプロシージャを呼び出します。このプロシージャは、ユーザー名、ログインキー、IPアドレスを取得し、有効かどうかを通知します。
このすべての終わりを処理するために、Djangoカスタム認証バックエンドを設定しました。パスワード引数を受け入れることができるかどうかに何らかの違いがありますか(実際にパスワードを取得していないため)?現時点では、ログイン引数をパスワード引数として使用するように設定しています。これをパスワードとしてではなく、login_keyのように変更することは、良いことでも悪いことでもないでしょうか?
解決
Djangoのドキュメントは次のように言っています:
どちらの方法でも、認証はチェックする必要があります 取得する資格情報、および必要があります 一致するUserオブジェクトを返します これらの資格情報、資格情報の場合 有効です。それらが有効でない場合、それは Noneを返す必要があります。
「どちらの方法」とは、authenticate()メソッドがユーザー名とパスワードの組み合わせを使用するか、トークンのみを使用するかを指します。あなたのシナリオはこれら2つの間にあるので、「最良の」答えは、ユーザー名とログインキーを取得して適切なUserまたはNoneを適切に返すauthenticate()を書くことだと思います。
所属していません StackOverflow