无法通过装置加载超级用户登录django admin

时间:2017-09-17 13:21:59

标签: python django django-fixtures

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

python manage.py loaddata data.json

这是我的data.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"
        }
    }
    ]

然后我尝试登录管理员但有错误:

"Please enter the correct username and password for a staff account. Note that both fields may be case-sensitive."

输出

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

我错了什么?

1 个答案:

答案 0 :(得分:0)

与所有表现良好的Web框架Django stores passwords as hashes一样。根据设计,哈希是单向的:您无法从存储的哈希中获取用户的密码。

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

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