Flask基础(11)-->http的无状态协议解决办法二(服务端session)

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分析流程图

原文地址:https://www.cnblogs.com/888888CN/p/9476522.html