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()
posted @ 2021-01-23 16:06  benny1  阅读(108)  评论(0编辑  收藏  举报