Flask 学习-63.Session 使用

2022-09-14 20:44:54 浏览数 (1)

前言

Session是在 cookies 的基础上实现的,并且在 cookies 中使用加密的签名。这意味着用户可以查看 cookie 的内容, 但是不能修改它,除非它知道签名的密钥。 要使用会话,你需要设置一个密钥 SECRET_KEY

配置SECRET_KEY

1.使用固定的SECRET_KEY

代码语言:javascript复制
from flask import Flask,session

app = Flask(__name__)
app.config['SECRET_KEY'] = 'xxxxx'  # 自己设置一个

2.使用随机生成器来生成漂亮的随机值

代码语言:javascript复制
from flask import Flask, make_response, request
import os

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)  # 随机生成

session 使用

完整示例

代码语言:javascript复制
from flask import Flask, make_response, request, session
import os

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)  # 随机生成

@app.route('/set')
def set_session():
    """
    设置session
    """
    session['username'] = 'yoyo'
    session['admin'] = 'yes'
    return 'success'

@app.route('/get')
def get_seesion():
    """获取session"""
    username = session.get('username')
    return username

@app.route('/delete')
def delete_session():
    """删除session"""
    print(f"删除前:{session.get('username')}")
    session.pop('username')
    # 或者
    # session['username'] = False
    print(f"删除后:{session.get('username')}")
    return 'success'

@app.route('/clear')
def clear_session():
    """清除session中所有数据"""
    session.clear()
    print(f"删除后:{session}")
    return 'success'

if __name__ == '__main__':
    app.run()

在浏览器中看到session是以cookie方式保存的

session有效期

如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束。

  • session.permanent = True在flask下则可以将有效期延长至一个月。 下面有方法可以配置具体多少天的有效期。
  • 如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束
  • 如果设置了session的permanent属性为True,那么过期时间是31天。
  • 可以通过给app.config设置PERMANENT_SESSION_LIFETIME来更改过期时间,这个值的数据类型是datetime.timedelay类型。

使用示例

代码语言:javascript复制
@app.route('/set')
def set_session():
    """
    设置session
    """
    session['username'] = 'yoyo'
    session['admin'] = 'yes'
    session.permanent = True  # 长期有效,一个月的时间有效
    return 'success'

全局配置

给app.config设置PERMANENT_SESSION_LIFETIME来更改过期时间 1.引入包:from datetime import timedelta 2.配置有效期限:app.config[‘PERMANENT_SESSION_LIFETIME’] = timedelta(days=7) # 配置7天有效 3.设置:session.permanent = True

代码语言:javascript复制
from flask import Flask,session
from datetime import timedelta
import os 
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效 

@app.route('/set')
def set_session():
    """
    设置session
    """
    session['username'] = 'yoyo'
    session['admin'] = 'yes'
    session.permanent = True  # 长期有效,一个月的时间有效
    return 'success'

2022年第 12期《python接口web自动化 测试开发》课程,9月17号开学!

本期上课时间:2022年9月17号 - 2022年12月17号,周六周日上午9:00-11:00

报名费:报名费3000一人(周期3个月)

联系微信/QQ:283340479

0 人点赞