Django 内置的User类提供了用户密码的存储、验证、修改等功能,能够很方便你的给用户提供密码服务。算法
默认的Ddjango使用pbkdf2_sha256方式来存储和管理用的密码,固然是能够自定义的。django
Django 经过PASSWORD_HASHERS 设置选择要使用的算法。下面有一个列表,列出了Django 支持的哈希算法类。列表的第一个元素 (即settings.PASSWORD_HASHERS[0]) 会用于储存密码, 全部其它元素都是用于验证的哈希值,它们能够用于检查现有的密码。意思是若是你打算使用不一样的算法,你须要修改PASSWORD_HASHERS,来将你最喜欢的算法在列表中放在首位。函数
一个settings中的Password_hashers看起来是这样的:hash
PASSWORD_HASHERS = (import
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
'django.contrib.auth.hashers.BCryptPasswordHasher',
'django.contrib.auth.hashers.SHA1PasswordHasher',
'django.contrib.auth.hashers.MD5PasswordHasher',
'django.contrib.auth.hashers.CryptPasswordHasher',
)密码
具体在Django中的用户密码生成、验证的过程是怎么样的,能够经过django.contrib.auth.hashers模块中的几个函数大致了解一下。经过对两个函数的了解,彻底能够脱离内置的User, 实现自定义的用户表中使用django内置的密码机制。im
首先导入word
from django.contrib.auth.hashers import make_password, check_passwordmake
经过函数名便可发现,主要有两个函数,分别是建立密码和验证auth
用法
ps = "123456"
dj_ps = make_password(ps, None, 'pbkdf2_sha256') #建立django密码, 第二个参数为None是每次产生的密码都不用,第三个参数为算法, 后面两个参数能够忽略
ps_bool = check_password(ps, dj_ps) # check_password 返回值为一个Bool类型,验证密码的正确与否