2017-12-15 15 views
-1

私は、認証バックエンドがメソッドget_user(user_id)authenticate(request, **credentials)を実装する必要があることを読んだ。さて、user_idget_user(user_id)は、ドキュメントに従って、ユーザーモデルの主キーでなければならず、メソッドはuser_idに対応するユーザーオブジェクトを返す必要があります。get_user(user_id)のuser_idはどこから来たのですか?

私の質問は、user_id引数はどこから来たのですか?認証時にユーザーが入力したユーザー名/電子メール/それは何ですか?もしそうなら、なぜそれが主キーでなければならないのですか?私が適合していると思われるどのような方法でも、私のget_user()メソッドの中に意図したユーザーを見つけることができないのはなぜですか?

答えて

2

デフォルトのユーザーモデルの場合、プライマリキーはAutoFieldであり、ログインに使用するユーザー名/電子メールではありません。これらのログイン資格情報は、get_userではなくauthenticateに渡されます。

ログインすると、Djangoはユーザーの主キーをセッションに格納します。要求ごとに、認証ミドルウェアはget_user()をこの主キーで呼び出し、request.userをログインユーザーに設定します。

関連する問題