zoukankan      html  css  js  c++  java
  • 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分析流程图

  • 相关阅读:
    C艹目录
    C艹重复输入小方法,for循环+while
    python with 语句妙用
    python with妙用
    Kali配置网卡静态信息
    Spring 之 注解详解
    html基础之 表单提交方法
    html 基础之 <link>标签
    android:padding和android:margin的区别
    css基础之 font的简写规则 以及 自定义 CSS3 @font-face详细用法
  • 原文地址:https://www.cnblogs.com/888888CN/p/9476522.html
Copyright © 2011-2022 走看看