在 Flask 项目中配置 Session:简明指南

flask,session · 浏览次数 : 4

小编点评

** Flask 内置会话** Flask 内置会话功能用于存储会话数据,并使用客户端 Cookie 存储会话数据。默认情况下,会话数据是签名的,但未加密。 ** Flask-Session 扩展** Flask-Session 是一个扩展库,可以用于在 Flask 项目中管理更复杂的会话需求。它支持多种存储后端,例如文件系统、Redis、Memcached 等。 ** 配置 Flask-Session** 要使用 Flask-Session,需要安装它并设置 `SESSION_TYPE` 配置值。默认情况下, `SESSION_TYPE` 为 `filesystem`。 ** 示例** ```python import uuid def generate_secret_key(): return str(uuid.uuid4()) app = Flask(__name__) app.secret_key = generate_secret_key() sessionapp = Sessionapp(app) @app.route('/') def index(): session['key'] = 'value' return 'Session data set' ``` ** 注意** * 请确保 `your_secret_key` 在运行程序之前设置。 * 可以使用 UUID 生成一个安全且唯一的 `secret_key`。 * 默认情况下,`SESSION_PERMANENT` 为 `True`,这意味着会话将被视为永久会话。

正文

本文介绍如何在 Flask 项目中配置会话

1. Flask 内置会话

Flask 自带会话管理功能,使用客户端 Cookie 存储会话数据。默认情况下,会话数据是签名的,以防止篡改,但未加密。因此,不建议在会话中存储敏感信息。Flask 内置会话适用于小型应用或会话数据量较少的情况。此外,默认情况下,Flask 的会话 Cookie 在关闭浏览器后会被清除。

from flask import Flask, session

app = Flask(__name__)
app.secret_key = 'your_secret_key'  # 设置 secret_key 以签名会话数据

@app.route('/')
def index():
    session['key'] = 'value'
    return 'Session data set'

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

2. 使用 Flask-Session 扩展

对于需要更强大会话管理的应用,可以使用 Flask-Session 扩展,将会话数据存储在服务器端。Flask-Session 支持多种存储后端,如文件系统、Redis、Memcached 等。

安装 Flask-Session
pip install Flask-Session
配置 Flask-Session
from flask import Flask
from flask_session import Session

app = Flask(__name__)
app.secret_key = 'your_secret_key'  # 可以使用uuid

# 配置 Flask-Session
app.config['SESSION_TYPE'] = 'filesystem'  # 使用文件系统存储会话
app.config['SESSION_FILE_DIR'] = '/path/to/session/files'  # 会话文件存储路径

# 初始化 Flask-Session
Session(app)

@app.route('/')
def index():
    session['key'] = 'value'
    return 'Session data set'

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

3. 生成安全的 secret_key

secret_key 对于 Flask 的会话管理和其他安全功能至关重要。推荐使用 UUID 生成一个安全且唯一的 secret_key

import uuid

def generate_secret_key():
    return str(uuid.uuid4())

或者直接通过这个网页来获得一个uuid

在线UUID生成工具

4. 默认配置值

使用 Flask-Session 时,有一些重要的默认配置值:

  • SESSION_TYPE: 默认为 null。需要设置为 'filesystem', 'redis', 'memcached', 等有效类型。
  • SESSION_PERMANENT: 默认为 True。会话将被视为永久会话。
  • PERMANENT_SESSION_LIFETIME: 默认为 31 天(timedelta(days=31))。
  • SESSION_FILE_DIR: 默认为当前工作目录下的 flask_session 目录。

总结

在 Flask 项目中配置会话既可以简单使用内置功能,也可以借助 Flask-Session 扩展来管理更复杂的会话需求。希望这篇指南对你在未来的 Flask 项目中配置会话有所帮助。 Happy coding!

与在 Flask 项目中配置 Session:简明指南相似的内容:

在 Flask 项目中配置 Session:简明指南

本文介绍如何在 Flask 项目中配置会话 1. Flask 内置会话 Flask 自带会话管理功能,使用客户端 Cookie 存储会话数据。默认情况下,会话数据是签名的,以防止篡改,但未加密。因此,不建议在会话中存储敏感信息。Flask 内置会话适用于小型应用或会话数据量较少的情况。此外,默认情况

痞子衡嵌入式:探讨i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题。 前段时间有客户在官方社区反映 i.MXRT1170 下使用官方 SDK 里 FlexSPI 驱动去擦写 Flash 时不能很好地支持全局中断。客户项目里用

通过钩子函数+Traceid实现Flask链路追踪

背景 在flask web中我们通常需要一个traceid作为调用参数传递给全链路各个调用函数 需要针对一次请求创建一个唯一的traceid:这里用uuid去简化代替 我们需要保证traceid不被污染,在每个请求期间存在,在请求结束销毁且线程独立:这里通过flask中的g对象来存储线程内的数据 由

《Flask Web 开发指南 pt.2》

哈喽大家好,我是咸鱼 在《Flask Web 开发指南 pt.1》中,咸鱼跟大家介绍了 Flask 的由来——诞生于一个愚人节玩笑,简单介绍了一些关于 Flask 的概念,并且编写了一个简单的 Flask 程序 在编写 Flask 程序的时候,你需要注意你的程序文件不要命名为 flask.py,建议

Flask框架:运用Ajax轮询动态绘图

Ajax是异步JavaScript和XML可用于前后端交互,在之前`《Flask 框架:运用Ajax实现数据交互》`简单实现了前后端交互,本章将通过`Ajax`轮询获取后端的数据,前台使用`echart`绘图库进行图形的生成与展示,后台通过`render_template`方法返回一串JSON数据集,前台收到后将其应用到绘图库上,实现动态监控内存利用率的这个功能。

Flask 上下文是什么 ?

哈喽大家好,我是咸鱼。今天我们来聊聊什么是 Flask 上下文 咸鱼在刚接触到这个概念的时候脑子里蹦出的第一个词是 CPU 上下文 今天咸鱼希望通过这篇文章,让大家能够对 Flask 上下文设计的初衷以及应用有一个基本的了解 Flask 上下文 我们在使用 Flask 开发 web 程序的时候,通常

Flask框架:如何运用Ajax轮询动态绘图

摘要:Ajax是异步JavaScript和XML可用于前后端交互。 本文分享自华为云社区《Flask框架:运用Ajax轮询动态绘图》,作者:LyShark。 Ajax是异步JavaScript和XML可用于前后端交互,在之前《Flask 框架:运用Ajax实现数据交互》简单实现了前后端交互,本章将通

[flask]统一API响应格式

前言 在设计API返回内容时,通常需要与前端约定好API返回响应体内容的格式。这样方便前端进行数据反序列化时相应的解析处理,也方便其它服务调用。不同公司有不同的响应内容规范要求,这里以常见的JSON响应体为例: { "code": 200, "data": { "content": "this is

《Flask Web 开发指南 pt.1》

最近在看辉哥的《Flask Web 开发实战》,这才有了《Flask Web 开发指南》系列的文章,偏向学习笔记多一点,也有实战的内容 看下这个系列的文章我能写多少篇 :) 愚人节玩笑 愚人节大家都喜欢开玩笑来整蛊别人以便达到娱乐效果,但对于开发者来说,就有可能出现让人意想不到的情况 2010 年

保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

在本文中,我们将以chatglm-6b为例详细介绍GPU云主机搭建AI大语言模型的过程,并使用Flask构建前端界面与该模型进行对话。