Python API怎么加Token认证_JWT生成与验证拦截器实现

FastAPI中JWT认证应使用HTTPBearer获取Token并用jwt.decode()校验,密钥须从环境变量读取且确保两端一致;签发时需设exp、sub等字段,用datetime.utcnow()+timedelta;依赖注入get_current_user实现自动校验。FastAPI里怎么给接口加JWT Token认证直接用 HTTPBearer + JWT.decode() 就能拦住没Token或过期的请求,但别手写验证逻辑------容易漏掉 aud、iss 校验,也容易把密钥硬编码进代码里。用 fastapi.security.HTTPBearer 获取请求头里的 Authorization: Bearer xxx,它自动拆出token字符串验证必须用 jwt.decode(),不是 jwt.encode() ------后者只生成,不校验签名和过期时间algorithms 参数必须显式传 "HS256",否则默认空列表,解码直接抛 InvalidAlgorithmError密钥建议从环境变量读:os.getenv("JWT_SECRET_KEY"),别写死在代码里JWT Token怎么安全生成(含用户ID和过期时间)生成时漏掉 exp 字段等于发永久通行证,而只用 datetime.utcnow() 不加 timedelta 又会导致 token 一签发就过期。必须传 exp:用 datetime.utcnow() + timedelta(hours=1),别用 datetime.now()(时区错乱风险)payload 至少带 sub(通常放用户ID)和 exp,iat 可选但建议加上用 jwt.encode(payload, key, algorithm="HS256"),key 类型必须是 str 或 bytes,传 None 会静默失败生成后立刻返回 access_token 和 token_type: "bearer",前端才能正确拼接请求头为什么每次请求都报 InvalidSignatureError90% 是密钥不一致:签发用的 key 和验证用的 key 看似一样,实则一个是字符串、一个是 bytes,或者前后有空格、换行符。检查 JWT_SECRET_KEY 环境变量是否被 shell 自动截断(比如值含 $ 被当成变量替换)验证前先 print(repr(key)),确认两边 key 的字节完全一致(注意 、 、空格)如果用 pydantic.BaseSettings 读配置,确保字段类型是 SecretStr 并调用 .get_secret_value()别用 base64.b64encode() 对密钥二次编码------jwt.encode() 内部不处理 base64,会直接拿原始字节算签名如何让登录接口返回Token,其他接口自动校验别在每个路由上重复写 Depends(get_current_user),用 FastAPI 的依赖注入链就行,但要注意依赖的 scope 和异常处理方式。 Trenz AI驱动的社交电商营销平台,专为TikTok Shop设计

相关推荐
2601_9620777114 小时前
基于Python与NLP的新闻事件信息抽取实战:从NER到时空标准化
python·nlp·transformers·spacy·新闻事件抽取
JavaPub-rodert14 小时前
LangChain 从入门到 Agent 实战:用 Python 搭建一个真正能调用工具和知识库的 AI 助手
人工智能·python·langchain
郝学胜-神的一滴14 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生
倔强的石头_15 小时前
事务边界与批量写入:避免长事务、锁等待和日志压力
数据库
努力努力再努力wz15 小时前
【Redis入门系列】从 KEYS 到 SCAN:渐进式遍历、Cursor 与位反转原理
数据库·redis·缓存
m0_3807438715 小时前
给 OpenAI API 调用加上模型切换:GPT-5.1 和 Codex 的配置实践
人工智能·python·gpt
2601_9622974816 小时前
在python3中、下列输出变量a的正确写法是_2020超星大数据Python免费答案
数据结构·python·算法·编程·字符串操作
“AI国潮设计-小江”16 小时前
Python实战 | SDXL精准控制“普宁英歌舞×星空蛋糕”IP落地,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc
坐吃山猪16 小时前
【多线程】Lock与Condition
大数据·数据库
公爵爱学习16 小时前
无人机视觉识别前序-Linux-YOLO安装
python·yolo·计算机视觉·conda·无人机