更改用户密码---Django

Django web项目之更改用户密码

相信有很多同学在更改用户密码时,都试过直接到后台的数据库中直接更改密码,结果再登录时却提示密码错误。这是为什么呢?
其实Django存储密码时并不是存储的明文,而是经过一系列算法加密后的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,您还可以在身份验证系统的管理页面上更改用户的密码。

Django还提供可用于允许用户更改自己密码的视图和表单。

更改用户密码将注销所有会话。有关详细信息,请参阅 密码更改的会话失效。

四、联系我

如果您对本篇文章有任何意见或者建议,欢迎联系我
邮箱:[email protected]

你可能感兴趣的:(更改用户密码---Django)