更改Django的默认通用密码列表

时间:2019-10-13 17:30:51

标签: python django

我只是尝试使用Django。当我尝试使用createsuperuser创建超级用户并且尝试使用诸如abcd1234之类的常用密码(因为不允许使用abc或123)时,它无法接受它,因为显然我的密码太普通了,我知道createsuperuser使用某种密码列表以使其与他们的密码匹配。我想问一下是否可以更改密码列表。

我已经尝试打开manage.py来找到createsuperuser方法,但我没有找到它,因为它仅包含run(sys.argv)

2 个答案:

答案 0 :(得分:0)

您应该能够。

寻找路径之后的文件夹:

\Python3\Lib\site-packages\django\contrib\auth或系统上的等效项。

在其中,您应该看到一个名为common-passwords.txt.gz的文件。

里面有一个名为common-passwords.new.txt

的文件

您应该只能够更改列表上的密码。每行一个密码。密码应完全小写,因为Django会自动将密码翻译为小写,以便与通用密码列表进行比较。

相关文档:https://docs.djangoproject.com/en/2.2/topics/auth/passwords/#django.contrib.auth.password_validation.CommonPasswordValidator

答案 1 :(得分:0)

欢迎来到Stackoverflow!

您也可以遵循其他答案。但是,每当您更改virtualenv时,都必须放置密码文件。这是将其保留在项目中的方法。

  1. 将文件放在manage.py存在的项目文件夹中
  2. 从您的项目文件夹中打开settings.py并添加以下内容

     FILE_NAME = "custom_common_password_list.txt"
    
  3. 在项目文件夹下创建文件custom_common_password.py

    # projectname/custom_common_password.py
    
    import os
    from django.contrib.auth.password_validation import CommonPasswordValidator
    from django.conf import settings
    
    
    class CustomCommonPasswordValidator(CommonPasswordValidator):
        def __init__(self):
            super().__init__(password_list_path=os.path.join(settings.BASE_DIR, settings.FILE_NAME))
    

我们基本上是用文件路径调用CommonPasswordValidator

  1. 修改AUTH_PASSWORD_VALIDATORS并添加以下内容:

    AUTH_PASSWORD_VALIDATORS = [
        # ...
        {
            'NAME': 'projectname.custom_common_password.CustomCommonPasswordValidator',
        },
        #...
    ] 
    

我们评论现有的CommonPasswordValidator并放置我们的自定义验证器。确保将projectname替换为您的项目名称。