前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django源码学习-2-Settings.py配置文件-下

Django源码学习-2-Settings.py配置文件-下

作者头像
小团子
发布2019-07-27 19:48:58
7820
发布2019-07-27 19:48:58
举报
文章被收录于专栏:数据云团数据云团

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

在知道了 Django 项目下的 Settings.py 文件需要有哪些配置后,那就再了解下 Django 密码系统。Django 有很多中密码加密的方式,但是在新建项目时,会默认配置密码加密以及校验的方式。

① Django密码存储和加密方式

代码语言:javascript
复制
#算法+迭代+盐+加密<algorithm>$<iterations>$<salt>$<hash>

settings 默认配置

PASSWORD_HASHERS[0]为正在使用的加密存储方式,其他为检验密码时,可以使用的方式。

代码语言:javascript
复制
PASSWORD_HASHERS = [    'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',    'django.contrib.auth.hashers.BCryptPasswordHasher',    'django.contrib.auth.hashers.PBKDF2PasswordHasher',    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',    'django.contrib.auth.hashers.Argon2PasswordHasher',]
代码语言:javascript
复制

其它加密方式配置,所有支持的hasher。

代码语言:javascript
复制
[    'django.contrib.auth.hashers.PBKDF2PasswordHasher',    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',    'django.contrib.auth.hashers.Argon2PasswordHasher',    'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',    'django.contrib.auth.hashers.BCryptPasswordHasher',    'django.contrib.auth.hashers.SHA1PasswordHasher',    'django.contrib.auth.hashers.MD5PasswordHasher',    'django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher',    'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher',    'django.contrib.auth.hashers.CryptPasswordHasher',]

② 手动校验密码

在进行用户登陆验证的时候,如果是亲自写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中;

如果用户存在于数据库中,然后再验证用户输入的密码,这样一来就要编写大量的代码。事实上,Django已经提供了内置的用户认证功能。

在使用"python manage.py makemigrations"和"python manage.py migrate"迁移完成数据库之后,根据配置文件settings.py中的数据库段生成的数据表中已经包含了6张进行认证的数据表,分别是

  1. auth_user
  2. auth_group
  3. auth_group_permissions
  4. auth_permission
  5. auth_user_groups
  6. auth_user_user_permissions
代码语言:javascript
复制
from django.contrib.auth.hashers import make_password
代码语言:javascript
复制
# 手动生成加密的密码,如果password=None,则生成的密码永远无法被check_password()make_password(password, salt=None, hasher="default")
代码语言:javascript
复制
from django.contrib.auth.hashers import check_password
代码语言:javascript
复制
# 和数据库的密码进行校验check_password(password, encoded)
代码语言:javascript
复制
from django.contrib.auth.hashers import is_password_usable
代码语言:javascript
复制
#检查密码是否可被check_password()is_password_usable(encoded_password)

③ 密码格式验证

代码语言:javascript
复制
AUTH_PASSWORD_VALIDATORS = [
# 检验和用户信息的相似度    {        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',    },# 校验密码最小长度    {        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',        'OPTIONS': {            'min_length': 9,        }    },
# 校验是否为过于简单(容易猜)密码    {         'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',    },
# 校验是否为纯数字    {        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',    },]
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ① Django密码存储和加密方式
  • ③ 密码格式验证
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档