1

私は2つの異なる方法でdjangoでUsers( )を作成しようとしました:django.contrib.auth.models.User

  1. 使用User.objects.create(username="<username_here>", password="<password_here>", email="<email_here>)-> これを使用すると、ユーザーがログインしたり、他のすべての特典がauth.models.User受けられなくなります。たとえば、authenticateこの方法で作成されたユーザーには使用できません。
  2. を使用しUser.objects.create_user("<username>", "<email>", "<password>")ます。authこの方法で問題なく実行でき、django のアプリに付属するすべての無料のものを使用できます。

私の質問は、なぜそうなのかということです。

4

3 に答える 3

0

Django のパスワードは単純なテキスト、つまりパスワード自体として保存されません。実際には、Django が特定のパスワード ( docs ) を検証するために使用するハッシュ文字列です。

于 2013-09-09T13:22:54.870 に答える
0

その理由は、関数が、パスワードに入力した値を取得し、「i like cat」のような「in the clear password」を取得し、「0mvu3kmiXHh$」として保存するのをより安全にするDjango のパスワード ハッシャーcreate_userを介して実行するヘルパー関数であるためです。 qhVGuNyO9cvV5spWeFrt9/ZhIR81GcvAGVKMgILwpkU=". したがって、パスワードとして「クリアな」パスワードを渡す代わりにを使用すると、ユーザーが「猫が好き」と入力するとハッシュされて比較されるため、機能しません。 Django のハッシャーを使用する代わりに、パスワードを直接入力します。createcreate_user

于 2013-09-09T19:14:50.423 に答える