どのように、ジャンゴはパスワードを評価しますか?
このブログは最初に投稿されましたmy blog .
数日前、私は古いJJANGOプロジェクトの1つに取り組んでいました.それは、Djangoの古いバージョンを実行していました、そして、私はフレームワークの最新の変化でそれを更新し続けたいです.
それで、チェックするadmin site , ローカルデータベースへの接続後にスーパーユーザを作成しようとしました.
このエラーは、このパスワード検証機能の背後にある作業をチェックしました.
私が最初に見たのは
私はそれを追跡し、パッケージを見つけた
私はそのことを聞いたことがないので
時には、コードを読むときに金を見つける右?😍
さあ、ビジネスに戻りましょう
あなたがしばらくの間Jjangoを使用しているならば、あなたはあなたが定義するセッティングに従い多くのものを変えることができるということを、あなたが知っています.
また、あなたのベースユーザーモデルとしていくつかのランダムモデルを使用しています.これはスーパーユーザーの作成が最初のことです
任意の相互作用なしでスーパーユーザを作成できるコマンドのバージョンを使用できます.
このプロセスを使用して作成されたユーザーはパスワードを持ちません.パスワードを作成するには
デフォルトでは
対話モード(デフォルトモードでもある)では、プロンプトがあなたに記入するように要求した最初のことは、ユーザー名です.
djangoは、現在のシステムユーザ名をデフォルトのユーザ名として賢く提案しようとします.(ちょうどワウ)
それがすでに取られるならば、それはシステムユーザ名を提案しません.私にとっては😂)
ユーザー名の後、デフォルトのユーザーモデルの電子メールフィールドである必須フィールドを入力する必要があります.
最後に、パスワードフィールドを入力する必要があります.
閉じるこの動画はお気に入りから削除されています.
The
もう一度、これらのバリデータを構成することもできます.これらの異なるパスワード検証が動作しない場合は、設定ファイルからクラスを削除して削除します.
これらは既定のバリデータです.
は は8文字以上でなければなりません. 一般的なパスワードのリストにはありません.一般的なパスワードのリストはファイルにあります. すべての数値文字を含んではなりません. 私は、パスワード処理のために基本的な構成をそのまま維持することを提案します.あなたは同様にそれの上に独自の検証を使用することができます.
だから、今回はそれです.次まで.
数日前、私は古いJJANGOプロジェクトの1つに取り組んでいました.それは、Djangoの古いバージョンを実行していました、そして、私はフレームワークの最新の変化でそれを更新し続けたいです.
それで、チェックするadmin site , ローカルデータベースへの接続後にスーパーユーザを作成しようとしました.
python manage.py createsuperuser
ユーザ名に似たパスワードを渡すと失敗しました.The password is too similar to the username.
このエラーは、このパスワード検証機能の背後にある作業をチェックしました.
私が最初に見たのは
manage.py
順番に呼び出されたメソッドをimportして実行したファイル自身.execute_from_command_line
.私はそれを追跡し、パッケージを見つけた
commands
私が知りたかったすべてを含むこと.このディレクトリには2つのファイルがありました.1. createsuperuser.py
2. changepassword.py
ChangePasswordコマンド
私はそのことを聞いたことがないので
changepassword
コマンド、私は最初にそれをしようとし、私の偉大な喜びに、それが働いたと思った.ユーザ名を最初の引数として渡す必要があります.python manage.py changepassword username
時には、コードを読むときに金を見つける右?😍
さあ、ビジネスに戻りましょう
createsuperuser
コマンドクラス.正しいデータベースの取得
あなたがしばらくの間Jjangoを使用しているならば、あなたはあなたが定義するセッティングに従い多くのものを変えることができるということを、あなたが知っています.
また、あなたのベースユーザーモデルとしていくつかのランダムモデルを使用しています.これはスーパーユーザーの作成が最初のことです
__init__
コンストラクタメソッドをチェックします.相互作用のないスーパーユーザの作成
任意の相互作用なしでスーパーユーザを作成できるコマンドのバージョンを使用できます.
python manage.py createsuperuser --username ranvir --email abc@abc.com --no-input
このプロセスを使用して作成されたユーザーはパスワードを持ちません.パスワードを作成するには
changepassword
コマンドまたは管理パネル.必須フィールドとインタラクティブモード
デフォルトでは
User
モデルemail
唯一の必須のフィールドですが、変更することによって変更することができますREQUIRED_FIELD
同様に設定します.対話モード(デフォルトモードでもある)では、プロンプトがあなたに記入するように要求した最初のことは、ユーザー名です.
djangoは、現在のシステムユーザ名をデフォルトのユーザ名として賢く提案しようとします.(ちょうどワウ)
それがすでに取られるならば、それはシステムユーザ名を提案しません.私にとっては😂)
ユーザー名の後、デフォルトのユーザーモデルの電子メールフィールドである必須フィールドを入力する必要があります.
最後に、パスワードフィールドを入力する必要があります.
validate passwordメソッド
閉じるこの動画はお気に入りから削除されています.
The
validatepassword
ユーザーが提供するパスワードを検証するために使用する関数です.もう一度、これらのバリデータを構成することもできます.これらの異なるパスワード検証が動作しない場合は、設定ファイルからクラスを削除して削除します.
これらは既定のバリデータです.
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
デフォルトのバリデータを使用する場合は、パスワードを入力します.username
, first_name
, last_name
and email
. また、類似性をチェックするSequenceMatcher . それはあなたがカスタマイズすることができる0.7と似ている必要があります.(それはAIだと言われました)common-passwords.txt.gz
. それはあなたが使用しないでください約20000の一般的なパスワードのリストが含まれています.だから、今回はそれです.次まで.
Reference
この問題について(どのように、ジャンゴはパスワードを評価しますか?), 我々は、より多くの情報をここで見つけました https://dev.to/singh1114/how-does-django-validate-passwords-339oテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol