python django 自定義用戶 如何加密密碼

python+django中使用hashlib庫(kù)對(duì)用戶密碼進(jìn)行加密處理

使用hashlib庫(kù)的sha1對(duì)數(shù)據(jù)進(jìn)行加密

如:

import hashlib

password = hashlib.sha1(fr.cleaned_data['password']).hexdigest()

其中fr.cleaned_data['password']是從表單獲取到的用戶密碼

用戶登陸的時(shí)候,也需要對(duì)密碼進(jìn)行加密處理后再進(jìn)行驗(yàn)證,否則會(huì)登陸失敗

如下是例子:

views.py

deflogin(request):

? ? username = request.session.get('username',None)

? ? Tasklist = Task.objects.order_by("-id")[0:10]

? ? if request.method == "POST":

? ? ? ? fr = loginForm(request.POST)

? ? ? ? if fr.is_valid():

? ? ? ? ? ? username = fr.cleaned_data['username']

password = hashlib.sha1(fr.cleaned_data['password']).hexdigest() ? ?#對(duì)數(shù)據(jù)進(jìn)行sha1加密

? ? ? ? ? ? name = User.objects.get(user = username).name

? ? ? ? ? ? user = User.objects.filter(user=username,passwd=password) #數(shù)據(jù)過(guò)濾,這里如果都匹配則返回值,

? ? ? ? ? ? if user: #判斷這個(gè)是否有效值

? ? ? ? ? ? ? ? request.session['username'] = name

? ? ? ? ? ? ? ? return HttpResponseRedirect("/")

? ? ? ? ? ? else: #無(wú)效

? ? ? ? ? ? ? ? return HttpResponseRedirect("/login.html",context_instance=RequestContext(request))

? ? else:

? ? ? ? fr = loginForm()

? ? return render_to_response('login.html',locals(),context_instance=RequestContext(request))

我在用戶注冊(cè)的時(shí)候,是直接在modes.py中進(jìn)行密碼處理的:

class User(models.Model):

? ? user = models.IPAddressField(unique=True)

? ? passwd = models.CharField(max_length=100)

? ? name = models.CharField(max_length=100,unique=True)

? ? post = models.CharField(max_length=100)

? ? phone = models.CharField(max_length=100)

? ? email = models.EmailField(max_length=100)

? ? qq = models.CharField(max_length=100)

? ? permissions = models.CharField(max_length=10)

? ? def __unicode__(self):

? ? ? ? return self.user

def save(self,*args,**kwargs):

? ? ? ? self.passwd = hashlib.sha1(self.passwd+self.user).hexdigest()

? ? ? ? super(User,self).save(*args,**kwargs)


當(dāng)然,這個(gè)也可以直接在views.py中進(jìn)行加密處理,但是牛人說(shuō)了,在MVC模式下,數(shù)據(jù)處理應(yīng)該交給models處理

下圖是數(shù)據(jù)庫(kù)中得到的密碼:

passwd字段,都是經(jīng)過(guò)sha1加密碼處理的,如第一個(gè)帳號(hào)為drfdai的真實(shí)密碼是:111111

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容