Python Flask如何实现用户登录_基于JWT令牌的身份验证机制实现

Flask中用PyJWT生成和验证JWT需四步:安装PyJWT、设保密密钥、签发时设exp过期时间、验证时用try/except捕获异常;Header提取须校验Bearer前缀;解码后查DB获取用户最新数据,不可仅依赖token内字段。Flask 中用 PyJWT 生成和验证 JWT 令牌的关键步骤JWT 不是 Flask 自带功能,得靠 PyJWT 库手动签发和校验。不装包、不设密钥、不处理过期,令牌就形同虚设。pip install PyJWT 是前提,漏掉会报 ModuleNotFoundError: No module named 'jwt'密钥必须保密且固定,建议从环境变量读:SECRET_KEY = os.environ.get('JWT_SECRET', 'dev-secret');硬编码在代码里等于把锁芯贴在门上签发时务必设 exp(单位秒),否则令牌永不过期:jwt.encode({'user_id': 123, 'exp': datetime.utcnow() + timedelta(hours=1)}, SECRET_KEY, algorithm='HS256')验证失败时 jwt.decode() 会抛异常,不是返回 None ------ 必须用 try/except 捕获 InvalidTokenError、ExpiredSignatureError 等如何在 Flask 路由中安全提取并验证 Authorization Header 中的 JWT前端通常把令牌放在 Authorization: Bearer <token> 里,但很多人直接切字符串、忽略大小写、不检查格式,结果被绕过验证。Header 值为空或格式不对时,request.headers.get('Authorization') 返回 None 或字符串,需先判断是否存在,再用 .split() 拆分,且要校验前缀是否为 'Bearer'(注意大小写)别用 str.split(' ')1 这种写法------如果 header 是 "bearer xxx" 或 "Bearer" 后没空格,就崩了;稳妥写法是 auth_header.split(maxsplit=1) + 长度判断解码后应校验关键字段,比如确认 user_id 存在且为整数,避免伪造 payload 导致越权不要在验证通过前就查数据库------先解码、验签名、验时间,全通过再查用户,否则攻击者可高频触发 DB 查询为什么不能把 JWT 存在 Cookie 里还设 HttpOnly=False设成 False 就等于把令牌暴露给前端 JS,XSS 一打一个准,和明文传密码没区别。若必须用 Cookie(比如想自动携带、防 CSRF),则务必设 HttpOnly=True、Secure=True(HTTPS 环境下)、Samesite='Lax'但这样 JS 拿不到 token,前端就无法在请求头里手动加 Authorization ------ 得改用 Cookie 方式传,后端用 request.cookies.get('access_token') 提取更常见也更可控的做法:登录成功后,后端只返回 token 字符串,前端存 localStorage 或内存变量,每次请求手动塞进 Authorization 头;缺点是需自行处理 XSS 风险,优点是逻辑清晰、调试方便Flask-SQLAlchemy 用户查询与 JWT payload 的耦合点在哪JWT 里通常只存 user_id,但业务逻辑常需要用户名、角色、邮箱等信息------这些不能全塞进 token,否则改个昵称就得重发令牌。 ARTi.PiCS ARTi.PiCS是一款由AI驱动的虚拟头像生产器,可以生成200多个不同风格的酷炫虚拟头像

相关推荐
嘘神秘用9 小时前
布:AI 驱动的 Redis 客户端,更快、更直观
数据库·人工智能·redis
我是坏垠10 小时前
Crypto、Cipher与Password:Java加密开发的三个核心概念
java·开发语言·python
东北小狐狸-Hellxz11 小时前
Redis 哨兵搭建+ACL权限控制
数据库·redis
测试秃头怪11 小时前
如何评估自动化测试脚本的编写时间和维护工作量?
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
姚青&11 小时前
测试左移体系
python·自动化
技术民工之路12 小时前
Python Socket编程零基础实战教程(TCP/UDP通信完整版)
python·tcp/ip·udp
EW Frontier12 小时前
三级跳突破864维动作空间——QMIX-Hierarchical多无人机协同通信方法全解析【附python代码】
开发语言·python·无人机·强化学习·通信资源分配
研究员子楚12 小时前
GEO行业发展标准体系白皮书V2.0-第09卷 · 适配篇:硅基主权伦理宪章与行业适配宣言
数据库·人工智能·geo
中微极客13 小时前
TensorFlow模型量化实战:从精度到延迟的优化指南
人工智能·python·tensorflow