2

私の大学が認証を扱う方法は次のとおりです。ユーザをウェブサイトにリダイレクトし、ユーザ名とパスワードを入力した後、ユーザ名とログイン文字列をクエリ文字列に渡してリダイレクトします。ユーザーを元に戻すときは、ユーザー名、ログインキー、およびIPアドレスを取得し、これが有効かどうかを私たちに知らせるストアドプロシージャを大学のデータベースに呼び出します。Djangoカスタム認証バックエンドはパスワードを取る必要がありますか?

私はこれのすべての終わりを処理するために設定されたDjangoカスタム認証バックエンドを持っています。私たちがパスワード引数を受け入れることができるかどうか(実際にパスワードを取っているわけではないので)、それは何か違いを生み出しますか?今、私はパスワードの引数としてログインキーを取るように設定しています。それはパスワードとしてではなくlogin_keyと言うようにこれを変更するのは良い、悪い、どちらもどちらですか?

答えて

6

Django docsはこれを言う:

いずれかの方法で、認証は、それを取得 資格情報を確認する必要がありますし、資格情報 が有効であれば、それは 、 これらの資格情報と一致するユーザーオブジェクトを返す必要があります。有効でない場合は、 はNoneを返します。

'どちらかの方法'は、authenticate()メソッドがユーザー名とパスワードの組み合わせか、トークンかを表します。あなたのシナリオはそれらの2つの間にあるので、私はあなたのユーザ名とログインキーを取得するためにあなたのauthenticate()を書いて、正しいUserまたはNoneを適切なものとして返すことが「最良の」答えだと思うでしょう。

+0

デフォルトの認証がどのように機能するかは、コードを見て確認してください。ドキュメントには他のものもあります。 「authenticate()を最初に呼び出す」のコメントを参照してください。 – Tiago

+0

+1:まず、authenticate()を呼び出します。 Djangoが使用するSHA1ダイジェストとは別のMD5ダイジェストを格納するためのProfile拡張機能を利用して、わかりやすく認証できるようにしました。 –

関連する問題