您的位置:首页 > 其它

Flask--哈希加盐-加密存储密码

2017-04-03 16:49 288 查看
参考链接

from werkzeug.security import generate_password_hash,check_password_hash


#哈希加盐的密码加密方法
def enPassWord(password):#将明密码转化为hash码
return generate_password_hash(password)#返回转换的hash码

def checkPassWord(enpassword,password):#第一参数是从数据查询出来的hash值,第二参数是需要检验的密码
return check_password_hash(enpassword,password)#如果匹配返回true


#注册新用户
@main.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'GET':
return render_template("user/register.html")
if request.method == 'POST':
u = request.form['username']
p = enPassWord(request.form['password'])
email = request.form['email']
addUser(u,p,email)
return redirect('/signin')#注册完之后进入登录页面

#登录用户
@main.route('/signin', methods=['GET', 'POST'])
def signin():
if request.method == 'GET':
return render_template("user/login.html")
if request.method == 'POST':
u = request.form['username']
p = request.form['password']
if isNameExisted(u):
t = checkPassword(u);#获得数据库存储的hash值
if check_password_hash(t,p):#查询有没有这个用户
session['logged_in'] = True
return redirect('/user/blog')
else:#没有用户就是新用户那么就转入注册页面
return redirect('/register')


数据库查询函数

def isNameExisted(username):#检查名字是否存在
sql = "select * from user where username ='%s'" % (username)
cur.execute(sql)
result = cur.fetchall()
if (len(result) == 0):
return False
else:
return True

def checkPassword(username):#检查密码是否正确
sql = "select password from user where username ='%s'" % (username)
cur.execute(sql)
result = cur.fetchall()
return str(result)[3:69]#返回hash码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: