session
由于http协议是一个无状态的协议,也就是说同一个用户第一次请求和第二次请求是完全没有关系的,但是现在的网站基本上有登录使用的功能,这就要求必须实现有状态,而session机制实现的就是这个功能。
用户第一次请求后,将产生的状态信息保存在session中,这时可以把session当做一个容器,它保存了正在使用的所有用户的状态信息;这段状态信息分配了一个唯一的标识符用来标识用户的身份,将其保存在响应对象的cookie中;当第二次请求时,解析cookie中的标识符,拿到标识符后去session找到对应的用户的信息
flask session存储位置
第一种方式:直接存在客户端的cookies中
第二种方式:存储在服务端,如:redis,memcached,mysql,file,mongodb等等,存在flask-session第三方库
flask的session可以保存在客户端的cookie中,那么就会产生一定的安全问题。
flask仅仅只对数据签名
flask session 用法(原理)
from datetime import timedelta
from flask import Flask,session
app = Flask(__name__)
# 设置session的密码
# 可以这样设置,但是有更好看的方法
# app.config['SECRET_KEY'] = 'abc123'
app.secret_key = 'abc123'
# 设置过期时间,类型是timedelta,写数字不报错、但是不生效,注意!!!
app.permanent_session_lifetime = timedelta(hours=1)
# 颁发session
@app.route('/')
def set():
# 类似字典
session['username'] = 'star'
# session.permanent = True
return 'hahaha!'
# 验证session是否有效
@app.route('/test')
def test():
username = session.get('username',None)
if username == 'star':
return 'success'
return 'error'
if __name__ == '__main__':
app.run(debug=True)
flask解密脚本
GitHub - noraj/flask-session-cookie-manager: :cookie: Flask Session Cookie Decoder/Encoder
和密码学原理一样,核心还是在于如何湖片区key,得到key皆不能上就解决了
评论3
isbbgjazyy
叼茂SEO.bfbikes.com
dgyoypmbmz
看的我热血沸腾啊https://www.jiwenlaw.com/
qvthijjqzr
看的我热血沸腾啊https://www.ea55.com/