session的交互流程
Session
- 对于敏感、重要的信息,建议存在服务器端,不能存储在浏览器中,比如用户名,密码,余额,验证码等信息
- 在服务器端进行状态保持的方案就是Session
- Session依赖于Cookie
设置和获取Session
from flask import Flask from flask import session from flask import redirect from flask import url_for app = Flask(__name__) """SECRET_KEY配置是通用秘钥,可以在Flask和多个第三方扩展中使用, 如其名所示,加密的强度取决于变量值的复杂度,不同程序要使用不同的秘钥 并且保证其他人不知道你所用的字符串 """ app.secret_key = "123456" # 用于加密session值 """考虑到安全性,这个秘钥是不建议存储在程序中的, 最好的方法是存储在你的系统环境变量中,通过 os.getenv(key,default=None)获得 """ @app.route('/set_session') def set_session(): # 设置Session session['user_name'] = 'laowang' return redirect(url_for('demo1')) # 重定向到demo1,将session同时传递到demo视图中 @app.route('/') def demo1(): return session.get("user_name","") # 获取Session,如果Session没有找到,返回一个空字符串给demo1视图 @app.route('/logout') def logout(): # 删除Session session.pop("user_name") return "删除成功" if __name__ == '__main__': app.run(debug = True)
在我们访问/logout视图之后,再访问demo1,我们发现报错了(上图代码中红色部分不添加的情况下),说明我们的Session删除成功。
如果在没有找到session的情况下,不发生报错,可以给视图返回一个空字符串(添加红色部分)
Session分析流程图