Flask 学习-63.Session 使用

前言

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

配置SECRET_KEY

1.使用固定的SECRET_KEY

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

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

from flask import Flask, make_response, request
import os

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

session 使用

完整示例

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类型。

使用示例

@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

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'
posted @   上海-悠悠  阅读(407)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2021-09-08 python测试开发django-120.bootstrap-table表格添加操作按钮(查看/修改/删除)
2021-09-08 python测试开发django-119.model_to_dict会漏掉DateTimeField字段
2021-09-08 python测试开发django-118.json 解析查询数据库 datetime 格式问题
2021-09-08 python测试开发django-117.bootstrapTable结合Paginator分页器查显示表格
2020-09-08 pytest文档54-Hooks函数terminal打印测试结果(pytest_report_teststatus)
点击右上角即可分享
微信分享提示