簡體   English   中英

無法通過裝置加載的超級用戶登錄django admin

[英]Can't login to django admin with superuser loaded via 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

我錯了嗎?

像所有行為良好的Web框架一樣, Django將密碼存儲為哈希值 哈希是一種單向方式:您無法從存儲的哈希中獲取用戶密碼。

我懷疑loaddata只是按原樣將數據插入數據庫中。 dumpdata顯示"password": "admin"的事實證實了這一點。 您將無法以這種方式創建的用戶登錄,因為不會有密碼哈希到"admin"

最好的解決方案可能是通過createsuperuser使用所需的密碼創建一個admin用戶, 然后使用dumpdata生成您的夾具。 createsuperuser將負責對您的密碼進行哈希處理。 您應該在密碼字段中看到一個長而隨機的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM