14 flask之session
1 cookie,session,token
- cookie:存在客户端的键值对
- session:存在服务端的键值对(解决cookie存敏感信息的问题)
- token:不在服务端存东西(解决服务端压力)
2 flask使用session
除请求对象之外,还有一个 session 对象。它允许你在不同请求间存储特定用户的信息。它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名要使用会话。
使用之前需要设置一个密钥
app.secret_key = 'dddddddddd'
3 设置session:session['key']=value
main.py
from flask import Flask, session
app = Flask(__name__)
app.secret_key = 'dddddddddd'
@app.route('/')
def index():
session['dzg'] = 'dzg'
return 'index'
if __name__ == '__main__':
app.run()
- 返回到前端的是token,所以没有在服务端存东西
- 和jwt原理很像
4 获取session
session['key']
5 删除
session.pop('key', None)
6 session源码:app.session_interface对象
源码执行流程:
- save_session:响应的时候,把session中的值加密序列化放到了cookie中,返回到浏览器中
- open_session:请求来了,从cookie中取值,反解,生成session对象,以后在视图函数中直接用session就可以了
7 使用自己的session
1、写一个类
2、app.session_interface = 自己写的类