Django web項(xiàng)目之更改用戶密碼
相信有很多同學(xué)在更改用戶密碼時(shí)络拌,都試過(guò)直接到后臺(tái)的數(shù)據(jù)庫(kù)中直接更改密碼乃坤,結(jié)果再登錄時(shí)卻提示密碼錯(cuò)誤旬迹。這是為什么呢荣恐?
其實(shí)Django存儲(chǔ)密碼時(shí)并不是存儲(chǔ)的明文液斜,而是經(jīng)過(guò)一系列算法加密后的hash數(shù)據(jù)。格式大概是
<algorithm>$<iterations>$<salt>$<hash>
以$分開(kāi)各組件叠穆,其中algorithms是hashing算法組件少漆,iteration是指算法迭代次數(shù),salt是指隨機(jī)salt硼被,hash則是指密碼對(duì)應(yīng)的hash值示损。這里不多加贅述,請(qǐng)看django的加密機(jī)制
由于django采用了這種機(jī)制嚷硫,所以我們直接在數(shù)據(jù)庫(kù)中操作password屬性是沒(méi)有意義的检访,要更改密碼有以下幾種方法始鱼。
一、命令行更改
python manage.py changepassword username
語(yǔ)句里面的username是指用戶名脆贵,這種方法會(huì)讓你輸入兩次密碼用以確認(rèn)更改密碼医清,如果兩次密碼相同則會(huì)更改成功。如果這條語(yǔ)句中丹禀,你不寫(xiě)用戶名状勤,那么此時(shí)將會(huì)操作你正在用的用戶名,例如此時(shí)你的身份由:
whoami
查詢得到是studentsinJian双泪,那么輸入:
python manage.py changepassword
即相當(dāng)于輸入了
python manage.py changepassword studentsinJian
二持搜、編程更改
使用set_password()函數(shù)
from django.contrib.auth.models import User
u = User.objects.get(username='wency')
u.set_password('new_password')
u.save()
三、Django admin
如果安裝了Django admin焙矛,您還可以在身份驗(yàn)證系統(tǒng)的管理頁(yè)面上更改用戶的密碼葫盼。
更改用戶密碼將注銷所有會(huì)話村斟。有關(guān)詳細(xì)信息贫导,請(qǐng)參閱 密碼更改的會(huì)話失效。
四蟆盹、聯(lián)系我
如果您對(duì)本篇文章有任何意見(jiàn)或者建議孩灯,歡迎聯(lián)系我
郵箱:psywency@foxmail.com