【FLASK】FLASK应用中的多用户并行登录与加密

在flask应用中,常常需要处理一下多用户高并发且需要安全性的场景。而这正是无法利用变量完成的,所以我们引入flask中的session方法来完美解决这件事情

首先我们需要定义一个secrets,这个密匙是在配置文件中自行定义的

python 复制代码
"SECRET_KEY": "123456789"

定义完之后,例如我们在前端进行登录,获取用户值和密码,然后返回后端进行数据库查验

python 复制代码
const response = await fetch('/api/login', {
             method: 'POST',
             headers: {'Content-Type': 'application/json'},
             body: JSON.stringify({ username: username, password: hashedPassword })
        });
        const data = await response.json();

查验之后没问题,利用session获取储存的用户和密码

python 复制代码
# 查验逻辑

logging.info(f"用户登录成功: {username}")
        
        # --- 核心修改:在 Session 中存储用户信息 ---
        session.clear() # 先清除旧的会话数据
        session['user_id'] = user_data['id']
        session['username'] = user_data['username']
        # Session 会自动通过浏览器 cookie 维护状态,不再需要文件
        # -----------------------------------------

然后后端会利用在前面定义的app.secret_key 来加密这个session,这个加密后的票根(Cookie)通过HTTP响应头 (Set-Cookie) 发回给你的浏览器。

python 复制代码
app = Flask(__name__, static_folder='static')
# --- 新增:为 Flask Sessions 设置密钥 ---
# 会话管理(例如登录状态)需要一个密钥来对 cookie 进行加密签名。
# 这是支持多用户并发会话的基础。
# 我们将从 secrets.json 文件中加载它。
app.secret_key = None 

那么在进行其他逻辑的时候,在发送这个请求时,浏览器会自动检查本地存储,发现有一张发自这个网站的"电子票根"(Session Cookie),于是自动把这张票根附加到请求头里一起发送出去。

  • 用户A 在 电脑A 上登录,服务器发给 电脑A 的浏览器一个 Cookie-A。
  • 用户B 在 电脑B 上登录,服务器发给 电脑B 的浏览器一个完全不同的 Cookie-B。
  • 当 电脑A 请求历史记录时,它发送 Cookie-A。服务器解密后得到 user_id: A,于是返回A的历史记录。
  • 当 电脑B 请求历史记录时,它发送 Cookie-B。服务器解密后得到 user_id: B,于是返回B的历史记录。
相关推荐
wstcl16 分钟前
让你的asp.net网站在调试模式下也能在局域网通过ip访问
后端·tcp/ip·asp.net
冬天给予的预感1 小时前
DAY 54 Inception网络及其思考
网络·python·深度学习
钢铁男儿1 小时前
PyQt5高级界而控件(容器:装载更多的控件QDockWidget)
数据库·python·qt
亿牛云爬虫专家5 小时前
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
分布式·python·架构·kubernetes·爬虫代理·监测·采集
ai小鬼头8 小时前
Ollama+OpenWeb最新版0.42+0.3.35一键安装教程,轻松搞定AI模型部署
后端·架构·github
萧曵 丶9 小时前
Rust 所有权系统:深入浅出指南
开发语言·后端·rust
老任与码9 小时前
Spring AI Alibaba(1)——基本使用
java·人工智能·后端·springaialibaba
蹦蹦跳跳真可爱5899 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
nananaij9 小时前
【Python进阶篇 面向对象程序设计(3) 继承】
开发语言·python·神经网络·pycharm
雷羿 LexChien9 小时前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt