zoukankan      html  css  js  c++  java
  • flask 的session

    python的flask操作设置、获得与删除session

    首先讲一下Python的flask中session与cookies的关系,session是储存在服务器中的,cookies是储存在浏览器本地中,而flask的session与cookies,
    session是经过加密保存在cookies中。 在flask中使用session需要先设置secret_key,根据算法加密session信息,来看下flask的session的API:
    ----------------------------------- 如果你设置了 Flask.secret_key ,你可以在 Flask 应用中使用会话。会话主要使得在请求见保留信息成为可能。 Flask 的实现方法是使用一个签名的 cookie 。
    这样,用户可以查看会话的内容,但是不能修改它,除非用户知道密钥。所以确保密钥被设置为一个复杂且无法被容易猜测的值。

    SECRET_KEY

    from flask import Flask,session
    import os
    
    app = Flask(__name__)
    app.config['SECRET_KEY'] = os.urandom(24)
    # 添加数据到session中
    # 操作session的时候 跟操作字典是一样的。
    # SECRET_KEY
    
    @app.route('/')
    def hello_world():
        session['username'] = 'zhangsan'
        return 'Hello World!'
    
    if __name__ == '__main__':
        app.run(debug=True)
    在flask中操作session有一点需要注意,就是需要设置一个'SECRET_KEY'。可以单独在配置文件中写SECRET_KEY.
    SECRET_KEY = 'abc'   #写在配置文件里的
    
    app.config['SECRET_KEY'] = 'abc'  # 写在main.py  就是app.run()的页面
    
    都是可以的,我这里用了一个随机的变量,而且是24位的。 os.urandom(24) 会从 0-9,a-z A-Z中随机选中24个字符串用做加密session的秘钥。
    或者称之为 “盐”。设置好之后执行下代码,然后在谷歌浏览器中找找这个session。在谷歌浏览器中找到设置,然后在最下面找到高级。
    设置session过期时间
    一般的session都过期时间
    如果没有指定session的过期时间,那么默认是浏览器关闭就自动结束,
    如果设置了session的permanent属性为True,那么过期时间是31天。
     如何设置过期时间?
    from datetime import timedelta
     app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)
     session.permanent = True
    
    当我只设置了session.permanent = True时,可以看到浏览器中127.0.0.1中的session过期时间为31天

    session 的设置 获取 删除 清空   下面代码示例

    from flask import Flask,session
    import os
    from datetime import timedelta
    app = Flask(__name__)
    app.config['SECRET_KEY'] = os.urandom(24)
    app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)
    # 添加数据到session中
    # 操作session的时候 跟操作字典是一样的。
    # SECRET_KEY
    
    @app.route('/')
    def hello_world():
        session['username'] = 'zhangsan'
        # 如果没有指定session的过期时间,那么默认是浏览器关闭就自动结束
        # 如果设置了session的permanent属性为True,那么过期时间是31天。
        session.permanent = True
        return 'Hello World!'
    
    @app.route('/get/')
    def get():
        # session['username']   如果username不存在则会抛出异常
        # session.get('username')   如果username不存在会得到 none 不会报错 推荐使用
        return session.get('username')
    
    @app.route('/delete/')
    def delete():
        print(session.get('username'))
        session.pop('username')
        print(session.get('username'))
        return 'success'
    
    @app.route('/clear/')
    def clear():
        print(session.get('username'))
        # 删除session中的所有数据
        session.clear()
        print(session.get('username'))
        return 'success'
    
    if __name__ == '__main__':
        app.run(debug=True)
  • 相关阅读:
    Sublime text 2/3 中 Package Control 的安装与使用方法
    http content-type accept的区别
    div布局
    [转]HDFS HA 部署安装
    Hive内置数据类型
    MyBatis注解select in参数
    HTTP协议状态码详解(HTTP Status Code)
    Hive基础(5)---内部表 外部表 临时表
    Hive基础(4)---Hive的内置服务
    MySQL数据备份之mysqldump使用(转)
  • 原文地址:https://www.cnblogs.com/zhangchen-sx/p/10590149.html
Copyright © 2011-2022 走看看