Django web项目之更改用户密码
相信有很多同学在更改用户密码时,都试过直接到后台的数据库中直接更改密码,结果再登录时却提示密码错误。这是为什么呢?
其实Django存储密码时并不是存储的明文,而是经过一系列算法加密后的hash数据。格式大概是
<algorithm>$<iterations>$<salt>$<hash>
以$分开各组件,其中algorithms是hashing算法组件,iteration是指算法迭代次数,salt是指随机salt,hash则是指密码对应的hash值。这里不多加赘述,请看django的加密机制
由于django采用了这种机制,所以我们直接在数据库中操作password属性是没有意义的,要更改密码有以下几种方法。
一、命令行更改
python manage.py changepassword username
语句里面的username是指用户名,这种方法会让你输入两次密码用以确认更改密码,如果两次密码相同则会更改成功。如果这条语句中,你不写用户名,那么此时将会操作你正在用的用户名,例如此时你的身份由:
whoami
查询得到是studentsinJian,那么输入:
python manage.py changepassword
即相当于输入了
python manage.py changepassword studentsinJian
二、编程更改
使用set_password()函数
from django.contrib.auth.models import User
u = User.objects.get(username='wency')
u.set_password('new_password')
u.save()
三、Django admin
如果安装了Django admin,您还可以在身份验证系统的管理页面上更改用户的密码。
更改用户密码将注销所有会话。有关详细信息,请参阅 密码更改的会话失效。
四、联系我
如果您对本篇文章有任何意见或者建议,欢迎联系我
邮箱:psywency@foxmail.com