无法通过固定装置加载超级用户登录到 django 管理员



我通过灯具添加了超级用户:

python manage.py loaddata data.json

这是我的数据.json:

[
{
"pk": 1,
"model": "auth.user",
"fields": {
"username": "admin",
"first_name": "admin",
"last_name": "admin",
"is_active": true,
"is_superuser": true,
"is_staff": true,
"groups": [],
"user_permissions": [],
"password": "admin",
"email": "admin@mail.com"
}
}
]

然后我尝试登录到管理员,但出现错误:

"请输入正确的员工帐户用户名和密码。请注意,这两个字段都可能区分大小写。

输出

dumpdata auth.user --indent 4 > output.json

显示

[
{
"pk": 1, 
"model": "auth.user", 
"fields": {
"username": "admin", 
"first_name": "admin", 
"last_name": "admin", 
"is_active": true, 
"is_superuser": true, 
"is_staff": true, 
"last_login": "2017-09-17T13:01:51.009Z", 
"groups": [], 
"user_permissions": [], 
"password": "admin", 
"email": "admin@mail.com", 
"date_joined": "2017-09-17T13:01:51.009Z"
}
}
]

我使用 django1.6 和 sqlite3

我错了什么?

像所有行为良好的Web框架一样,Django将密码存储为哈希。根据设计,哈希是单向的:您无法从存储的哈希中获取用户的密码。

我怀疑loaddata只是将数据按原样插入您的数据库。dumpdata显示"password": "admin"的事实证实了这一点。您将无法以这种方式创建的用户身份登录,因为没有密码会散列到"admin"

最好的解决方案可能是通过createsuperuser使用您想要的密码创建一个admin用户,然后使用dumpdata生成您的灯具。createsuperuser将负责散列您的密码。您应该在密码字段中看到一个长而随机的字符串。

最新更新