Django 内置的User类提供了用户密码的存储、验证、修改等功能,可以很方便你的给用户提供密码服务。

默认的Ddjango使用pbkdf2_sha256方式来存储和管理用的密码,当然是可以自定义的。

Django 通过PASSWORD_HASHERS 设置选择要使用的算法。下面有一个列表,列出了Django 支持的哈希算法类。列表的第一个元素 (即settings.PASSWORD_HASHERS[0]) 会用于储存密码, 所有其它元素都是用于验证的哈希值,它们可以用于检查现有的密码。意思是如果你打算使用不同的算法,你需要修改PASSWORD_HASHERS,来将你最喜欢的算法在列表中放在首位。

一个settings中的Password_hashers看起来是这样的:

PASSWORD_HASHERS = (

'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内置的密码机制。

首先导入

from django.contrib.auth.hashers import make_password, check_password

通过函数名即可发现,主要有两个函数,分别是创建密码和验证

用法

ps = "123456"

dj_ps = make_password(ps, None, 'pbkdf2_sha256')   #创建django密码, 第二个参数为None是每次产生的密码都不用,第三个参数为算法, 后面两个参数可以忽略

ps_bool = check_password(ps, dj_ps) # check_password 返回值为一个Bool类型,验证密码的正确与否

Django自带的加密算法及加密模块的更多相关文章

  1. django自带加密模块的使用

    首先,引入模块:  代码如下 复制代码 >>> from django.contrib.auth.hashers import make_password, check_passwo ...

  2. Django 自带密码加密,自定密码加密方式 及自定义验证方式

    在django1.6中,默认的加密方式是pbkdf_sha256,具体算法不表,一直以来用django的自带用户验证都十分顺手,今天有需求,需要修改默认加密方式为md5,具体方法为: 在setting ...

  3. 为什么不能访问django自带的索引页

    通过HTTP://192.168.160.128:8000访问虚拟机上的django索引页出现“ 无法访问此网站 192.168.160.128 拒绝了我们的连接请求. ” 是什么原因呢?费了好大一番 ...

  4. django自带wsgi server vs 部署uwsgi+nginx后的性能对比

    一.下面先交代一下测试云主机 cpu: root@alexknight:/tmp/webbench-1.5# cat /proc/cpuinfo |grep model model : model n ...

  5. Django自带的用户认证auth模块

    一.介绍 基本上在任何网站上,都无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能. 使用Django,我们可以不需要自己写这些功能,因为Dj ...

  6. Django学习之django自带的contentType表 GenericRelation GenericForeignKey

    Django学习之django自带的contentType表   通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/a ...

  7. Django 自带认证功能auth模块和User对象的基本操作

    一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: authenticate()    ...

  8. (30)auth模块(django自带的用户认证模块)

    Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的 ...

  9. 单独的 python 脚本文件使用 django 自带的 model

    django1.9.5&python3.4.4 文件结构 在一个爬虫脚本中将爬取的数据通过django自带的model保存到数据库   修改的文件(其余pycharm新建Django项目生成, ...

随机推荐

  1. 搜集的一些酷炫的金属色 ,RGB值 和大家分享一下

    开发iOS程序过程中会使用到RGB,要注意每个RGB值都要除以 255.0 ,注意: ' .0 ' 不能省!! 一下是本人搜集的一些酷炫金属色的RGB值:   黄金 242,192,86 石墨 87, ...

  2. Tomcat源码学习

    Tomcat源码学习(一) 转自:http://carllgc.blog.ccidnet.com/blog-htm-do-showone-uid-4092-type-blog-itemid-26309 ...

  3. Unity工程3D和2D开发模式切换

    在新建工程时,经常会选择默认的3D工程,但是如果想做2D游戏又不小心选了3D工程呢,总不能把工程删了重新建吧,有个办法就是打开 Edit > Project Settings > Edit ...

  4. Fast-RCNN

    后面框架回归和分类都放到了神经网络里 测试速度提升100倍 训练10

  5. IDE、SATA、SCSI、SAS、FC、SSD 硬盘类型

    http://www.cnblogs.com/awpatp/archive/2013/01/29/2881431.html

  6. spring配置文件中bean标签

    <bean id="beanId"(1) name="beanName"(2) class="beanClass"(3) parent ...

  7. 详解JavaScript的splice()方法

    from:http://www.jquerycn.cn/a_10447 在javascript中splice()方法,是一个很强的数组方法,它有多种用法.splice()主要用途是向数组的中部插入项. ...

  8. 1-0 superset的安装和配置

    Superset安装及教程官网(http://airbnb.io/superset/installation.html)讲解的已经够详细的了,本篇以官网教程为蓝本进行说明. 入门 Superset目前 ...

  9. DAGDGC特殊调弦

    DAGDGC 特殊调弦 重要知识点: 1)音高从高到低排序为:BAGFEDC 2)吉他标准音是(1到6弦) EBGDAE 3)吉他同一弦,每相差一个品级,相差是半个音 调弦方法:1)第一弦(E-> ...

  10. apache编译安装完成后的服务启动设置

    Apache安装后可通过其安装路径的bin目录下的apachectl脚本控制服务的启动和停止.本例中apache安装在/usr/local/apache-2.2.6,服务控制脚本为: /usr/loc ...