Flask-----Flask里引用哈希密码

                       

   哈希密码(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中最简单的注册、登录。

     

    

 

    

  

 

        

        

    

      

原文地址:https://www.cnblogs.com/coolwxh/p/10479058.html

时间: 2024-10-16 06:53:25

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

.Net里的哈希表和串行化

.Net里的哈希表和串行化 介绍 本文介绍了,在.net里,使用哈希表和串行化的C#用法.这里使用的示例应用程序是一个电话簿.电话簿应用程序,是一个控制台的程序.它允许你添加,查看,列出和删除它里面的姓名和电话号码. 哈系表是"键-值"对的集合.在.net里,类Hashtable是哈希表的实现.通过调用Add方法,传递你想添加的键值对,可以完成添加.作为键来使用的这些对象,必须实现Object.Equals 和Object.GetHashCode方法. private Hashtabl

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

去掉svn里记住的用户名密码 删除掉 c:\Documents and Settings\administrator\ApplicationData\Subversion\auth\svn.simple文件夹下的文件即可. 再次访问时,会弹出要求输入用户名和密码

InfoPath与SharePoint之(六)在表单库里引用InfoPath Form Content Type

在表单库里引用InfoPath Form Content Type 在上一篇,介绍了如何把InfoPath Form类型的Content Type发布到SiteCollection,发布完之后,就可以在已经存在的表单库里引用了. 打开一个已经存在的表单库,点击Ribbon上的Library Settings: 在Settings页面,点击Advanced Settings: 默认情况下,添加Content Type功能是关闭的,在这里开启: 再回到Library Settings页面,就可以添加

21-理解Zend里的哈希表

21-理解Zend里的哈希表 在PHP的Zend引擎中,有一个数据结构非常重要,它无处不在,是PHP数据存储的核心,各种常量.变量.函数.类.对象等都用它来组织,这个数据结构就是HashTable. HashTable在通常的数据结构教材中也称作散列表,哈希表.其基本原理比较简单(如果你对其不熟悉,请查阅随便一本数据结构教材或在网上搜索),但PHP的实现有其独特的地方.理解了HashTable的数据存储结构,对我们分析PHP的源代码,特别是Zend Engine中的虚拟机的实现时,有很重要的帮助

JS里引用CSS属性时候的命名

????如果JS代码中设置<p>元素的另一个CSS属性font-family.这个属性的获取方式与color属性略有不同,因为 font和family之间的连字符与JS中减法操作符相同,JS会把它解释为减号.如果你像下边这样访问名为 font-family 的属性,会收到一条出错信息: ????Element.style.font-family ????JS将减号前边的内容解释为"元素的style属性的font属性",把减号后的内容解释为一个名为family的变量,将整个表

PHP比md5更安全的加密方式--哈希密码

传统加密方式: md5(密码+盐值); $passwordString='your password';//你的密码 $salt="your salt value";//盐值,增加复杂度(随机字串) $md5Password=md5($passwordString.$salt); 从理论上来说,md5不可逆,算是一种比较安全的加密方式.但是我要提醒的是,md5早在04年的时候就被中国人破解(请自行搜索山东大学王小云).一旦被人拖库的化,密码泄漏的可能性极大. 现在推荐一种新的处理方式:

如何在js里引用php变量

如何在js里面引用php的变量 php代码------------------------------------------- js代码------------------------------------------- cheche1984 | 浏览 16259 次  2013-01-15 17:04 2013-01-17 17:47 最佳答案 在js中可以使用<?php ?>来输出你需要引用的变量.例如在你的第一个红色区域替换为 <?php echo $a; ?>在你的第二

c中头文件在cpp文件里引用和.h文件引用的思考

我们在编敲代码中头文件是常常使用的. 可是头文件是应该包括在.H文件里还是在.cpp文件里.在这个其中有什么样去差别呢. 假如说我们编写了一个a.cpp  .我们将a.cpp文件的变量和函数申明在a.h中. 在a.h文件有使用了b.中定义的类型type1数据m_type,相同b.cpp的头文件一些变量也声明在b.h中. 此时我们当然能够在a.cpp中包括b.h 也能够在a.h中.这样都是可行的.由于我们编译的时候会会将b.h包括进来. 而.h文件是不參与编译的.然后我们继续深入. 假如我们将b.

黄聪:如何阻止iframe里引用的网页自动跳转

今天做了个网页,要在网页里设置一个iframe,然后套用其他的网站.使用http://luanqi-cat.blogbus.com 这个网址的时候,出现了莫名其妙的问题,我的网页居然会强制自动跳转到这个网页上.搜索了一番,才知道原来这个网页用了如下的一段代码: if (top.location != self.location) {top.location=self.location;} 使用里这段代码之后,会自动判断当前的location是否是顶层的,即是否被嵌套到iframe里面了,如果是,