前言
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