django相关内容
django相关知识
django用户密码相关
密码规则
假设这是数据库内的密码密文
pbkdf2_sha256$216000$HemUbE205Tbj$PT7B/2ZuuL6mTZoQBBHp5Hxp9r/8udRrbS+XTqZPblc=
根据 $
依次分解如下
- 算法
pbkdf2_sha256
- 迭代次数
216000
- 盐
HemUbE205Tbj
- 密码加密结果
PT7B/2ZuuL6mTZoQBBHp5Hxp9r/8udRrbS+XTqZPblc=
如何手动生成加密后密码
import hashlib
import base64
# 算法
digest = 'sha256'
# 明文密码
password = '123'
# 盐
salt = 'HemUbE205Tbj'
# 迭代次数
iterations = 216000
# 加密结果字节长度;如果是None,默认32
dklen = None
print(base64.b64encode(hashlib.pbkdf2_hmac(digest, password.encode(), salt.encode(), iterations, dklen)).decode())
"""
源码
from django.contrib.auth.hashers import check_password
from django.utils.crypto import salted_hmac
"""
如何在django-admin更新密码的时候,自动加密密码
用的simple-ui+自定义用户model。
在django里更新用户密码的时候,不会自动加密。
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
# 当密码有更改的时候,重新加密密码
if obj.password != form.initial['password']:
obj.set_password(obj.password)
obj.save()