哈希密码(Password Hash):

        对口令进行一次性的加密处理而形成的杂乱字符串。这个加密的过程被认为是不可逆的,也就是说,人们认为从哈希串中是不可能还原出原口令的。(这句话是比较官方的解释)。   
          
        白话点说就是:当我们在注册账号密码的时候,需要用到,Password  Hash 会将我们注册的密码进行一次加密处理。然后当我们做登录操作的时候,会进行一次解密处理去和我们输入的密码匹配。
    
    
   在Flask中的使用:
        
     1.导包
# 导包         from werkzeug.security import generate_password_hash,check_password_hash

 其中:  generate_password_hash 是生成密码     ;   check_password_hash 是密码验证

  2. 注册账号的时候用到     generate_password_hash

@admin_blue.route('add_user')
defadd_user():      # Adminuser是数据库中一张表的名字 , user:注册的账号    pass_hash: 注册的密码,此时注册的密码的是 123
   add_user=Adminuser(user='admin',pass_hash=generate_password_hash('123'))
   db.session.add(add_user)
   return'OK'

  此时我们注册的密码是“123”,当我们用到  generate_password_hash  将“123”加密的时候,数据库里面就变成:

  3. 我们既然已经完成了注册,就轮到登录,当我们登录的时候,在输入密码的时候,就需要用到 check_password_hash来解密,进而来验证密码

# 登录
@admin_blue.route('/login',methods=['get','post'])
def login():
    if request.method=='POST':
        username=request.form.get('username')
        password=request.form.get('password')
        if not all([username,password]):
            flash('请输入账号和密码')
        else:
            sqluser=Adminuser.query.filter(Adminuser.user==username).first()
            if not sqluser:
                flash('账号不正确')
            else:
                a=check_password_hash(sqluser.pass_hash,password)
                print(a)
                if a:
                       session['admin_username']=username
                       return redirect(url_for('admin.index'))
                else:
                       flash('密码不正确')
    return render_template('admin/login.html')

  

  

    总之重点就在于:  generate_password_hash 是生成密码     ;   check_password_hash 是密码验证,其他的代码就是Flask中最简单的注册、登录。

     

    

 

    

  

 

        
        
 
    

      

Flask-----Flask里引用哈希密码的更多相关文章

  1. python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...

  2. Inside Flask - flask.__init__.py 和核心组件

    Inside Flask - flask.__init__.py 和核心组件 简单的示例 首先看看一个简单的示例.使用 Flask ,通常是从 flask 模块导入 Flask . request 等 ...

  3. Inside Flask - Flask 简介

    Inside Flask - Flask 简介 前言 Flask 的设计目标是实现一个 wsgi 的微框架,其核心代码保持简单和可扩展性,很容易学习.对于有一定经验初学者而言,跟着例子和一些书的代码来 ...

  4. [python][flask] Flask 图片上传与下载例子(支持漂亮的拖拽上传)

    目录 1.效果预览 2.新增逻辑概览 3.tuchuang.py 逻辑介绍 3.1 图片上传 3.2 图片合法检查 3.3 图片下载 4.__init__.py 逻辑介绍 5.upload.html ...

  5. Inside Flask - flask 扩展加载过程

    Inside Flask - flask 扩展加载过程 flask 扩展(插件)通常是以 flask_<扩展名字> 为扩展的 python 包名,而使用时,可用 import flask. ...

  6. linux去掉svn里记住的用户名密码

    去掉svn里记住的用户名密码   删除掉 c:\Documents and Settings\administrator\ApplicationData\Subversion\auth\svn.sim ...

  7. 06 hash join (Oracle里的哈希连接原理)

    hash join (Oracle里的哈希连接原理) 2015年09月25日 17:00:28 阅读数:2188 哈希连接(HASH JOIN)是一种两个表在做表连接时主要依靠哈希运算来得到连接结果集 ...

  8. Flask - Flask的蓝图(BluePrint)

    目录 Flask - Flask的蓝图(BluePrint) 一. 初始Flask蓝图 进阶Flask蓝图 使用蓝图做一个增删改查 1.使用蓝图进行web应用搭建: 2.使用Flask蓝图,查看学生信 ...

  9. python函数里引用全局变量

    python在引用变量的时候尤其要注意变量的作用域,在函数里引用不可变类型变量的时候,函数执行结束后是不会改变全局变量的值的:若想在函数里改变不可变类型全局变量的值时,引用的时候要用”global a ...

随机推荐

  1. git不提交某个文件

    在版本库中的文件,即使维护在.gitignore也不管用了.要先移除. 比如Constants.java,进入到这个文件目录下: 第一步:git rm -r -n —cached Constants. ...

  2. 突破防盗链Referrer

    //引用的源码网站的js<script src="https://raw.githack.com/jpgerek/referrer-killer/master/referrer-kil ...

  3. PHP的json_encode()函数与JSON对象

    一.问题描述 这周搬砖的时候,前端通过ajax获取后端的数据后,照例用 对象.属性 的方式取值,然而结果总是总是不能如预期般展示在页面上. 先写个 demo 还原下场景:选中一个下拉框列表选项后,会在 ...

  4. 【转载】MessageFormat.format方法

    MessageFormat.format方法实例 public static void main(String[] args) { String a= "aaa"; String ...

  5. python -- 小数据池 is和 == 再谈编码

    1.小数据池 python程序是由代码块构成的,一个代码块的文本作为python程序的执行单元. 代码块:一个模块,一个函数,一个类,甚至一个command命令都是一个代码块,一个文件也是一个代码块, ...

  6. Webpack学习-Loader

    什么是Loader? 继上两篇文章webpack工作原理介绍(上篇.下篇),我们了解到Loader:模块转换器,也就是将模块的内容按照需求装换成新内容,而且每个Loader的职责都是单一,只会完成一种 ...

  7. lr-web services协议

    1.web services协议简介 web services协议是建立可交互操作的分布式应用程序的新平台,它通过一系列标准和协议来保证程序之间的动态链接,其中最基本的协议包括soap,wsdl,ud ...

  8. 关于node_js的比较

    node_js的比较是我自己初学遇到的第一个绕脑的事情. 在比较的函数多了之后,一些函数的调用和变量提升, 搞得自己头晕,有时候函数是没有返回值的,自己还在 用变量值去比较,实际上却是undefine ...

  9. JavaScript Basic Memo

    1.this 的指向 1).由 new 调用?绑定到新创建的对象. 2). 由 call 或者 apply(或者 bind)调用?绑定到指定的对象. 3). 由上下文对象调用?绑定到那个上下文对象. ...

  10. Forth-83 多任务解析

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...