django 1.9 createsuperuser 绕过密码验证检查
Posted
技术标签:
【中文标题】django 1.9 createsuperuser 绕过密码验证检查【英文标题】:django 1.9 createsuperuser bypass the password validation checking 【发布时间】:2016-05-21 16:22:24 【问题描述】:尝试在新的 django 1.9 版本上工作,并通过以下方式创建一个超级用户:
python manage.py createsuperuser
而我只是想在本地开发环境使用一个简单的密码,比如只有一个字符,django1.9升级到非常严格的密码验证策略,如何绕过呢?
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
This password is too common.
This password is entirely numeric.
【问题讨论】:
不使用弱密码的习惯如何?使用KeePass 之类的东西来生成和存储密码并自动将密码输入到应用程序中? 如何将控制权交给用户并让他们决定什么是适当的安全立场? KeePass 没有解决我没有登录浏览器窗口的无数情况。 【参考方案1】:使用复杂密码创建超级用户后,您可以在 shell (./manage.py shell) 中将其设置为更简单的内容:
from django.contrib.auth.models import User
user = User.objects.get(username='your_user')
user.set_password('simple')
user.save()
【讨论】:
你也可以运行 './manage.py shell' 或 'python manage.py shell' 否 -- 是必需的【参考方案2】:您可以在您的开发环境中更改 AUTH_PASSWORD_VALIDATORS 设置。请参阅文档:https://docs.djangoproject.com/en/stable/topics/auth/passwords/#s-enabling-password-validation。
这很简单:您将识别出导致您的警告消息的验证器。
【讨论】:
【参考方案3】:实际上,您不需要修改验证器设置或先创建一个复杂的密码,然后再更改它。相反,您可以创建一个简单的密码,直接绕过所有密码验证器。
打开 django shell
python manage.py shell
类型:
from django.contrib.auth.models import User
按回车键,然后输入(例如,使用仅包含字母“a”的密码):
User.objects.create_superuser('someusername', 'something@example.com', 'a')
再次按回车键就完成了。
【讨论】:
【参考方案4】:mimo的答案是正确的,但如果你不使用默认的User
模型就不起作用
根据mimo的回答和这个article,我把脚本改成了这个
from django.contrib.auth import get_user_model
User = get_user_model()
user = User.objects.get(email='user@mail.com')
# or user = User.objects.get(username='your_user')
user.set_password('simple')
user.save()
【讨论】:
以上是关于django 1.9 createsuperuser 绕过密码验证检查的主要内容,如果未能解决你的问题,请参考以下文章
后台创建管理员 createsuperuser 时 报django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module