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

python+django中使用hashlib庫對用戶密碼進行加密處理

使用hashlib庫的sha1對數據進行加密

如:

import hashlib

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

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

用戶登陸的時候,也需要對密碼進行加密處理后再進行驗證,否則會登陸失敗

如下是例子:

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() ? ?#對數據進行sha1加密

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

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

? ? ? ? ? ? if user: #判斷這個是否有效值

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

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

? ? ? ? ? ? else: #無效

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

? ? else:

? ? ? ? fr = loginForm()

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

我在用戶注冊的時候,是直接在modes.py中進行密碼處理的:

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)


當然,這個也可以直接在views.py中進行加密處理,但是牛人說了,在MVC模式下,數據處理應該交給models處理

下圖是數據庫中得到的密碼:

passwd字段,都是經過sha1加密碼處理的,如第一個帳號為drfdai的真實密碼是:111111

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容