Flask设置session

呜呜呜开车啦 2019-03-22 11:45:53
from flask import Flask, session
import os
from datetime import timedelta

app = Flask(__name__)
app.config.from_object('config')
app.config['SECRET_KEY'] = os.urandom(24)
# permanent 永久的意思 即使关闭浏览器依然存在 默认过期时间31天,
app.config["PERMANENT_SESSION_LIFETIME"] = timedelta(days=7)


# 添加数据到session中
# secret_key

# 设置session
@app.route('/')
def hello():
session['username'] = '0000'
# 如果没有指定session 的过期时间,默认浏览器关闭后就自动结束

session.permanent = True

return 'hello'


# 获取session
@app.route('/get')
def get():
return session.get('username')

案例:

# 删除session
@app.route('/delete')
def delete():
print(session.get('username'))
session.pop('username')
print(session.get('username'))
return 'success'


# 清除session
@app.route('/clear')
def clear():
print(session.get('username'))
session.clear()
print(session.get('username'))

return 'success'


if __name__ == '__main__':
app.run(debug=app.config['DEBUG'], port=99, host='0.0.0.0')


在Flask中加密的方式:
利用Flask中的werkzeug.security模块加密
这个模块中主要是利用到两个函数:

(1)密码生成函数:generate_password_hash

(2)密码验证函数:check_password_hash

1、密码生成函数:generate_password_hash
函数定义:
werkzeug.security.generate_password_hash(password, method='pbkdf2:sha1', salt_length=8)


password:明文密码

method:哈希加密的方法(需要hashlib库支持的),格式为pdpdf2:<method>[:iterations]

method:哈希的方式,一般为SHA1

iterations:(可选参数)迭代次数,默认为1000

salt_length:盐值的长度,默认为8

加密之后的字符串格式:
method$salt$hash

2、密码验证函数:
check_password_hash
函数定义:
werkzeug.security.check_password_hash(pwhash, password)

数定义:

pwhash:generate_password_hash生成的哈希字符串

password:需要验证的明文密码

 check_password_hash函数用于验证经过generate_password_hash哈希的密码
。若密码匹配,则返回真,否则返回假。
用法:

OOP用法:
from werkzeug.security import generate_password_hash,check_password_hashclass User(object):

def __init__(self, username, password):
self.username = username
self.set_password(password)
def set_password(self, password):
self.pw_hash = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.pw_hash, password)

>>> me = User('John Doe', 'default')
>>> me.pw_hash
'sha1$Z9wtkQam$7e6e814998ab3de2b63401a58063c79d92865d79'
>>> me.check_password('default')
True
>>> me.check_password('defaultx')
False
...全文
72 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,658

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧