You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI的Simple OAuth2教程中客户端access token存储与传递机制问询

疑问解答

你观察到的所有现象都是FastAPI默认集成的Swagger UI(OpenAPI文档页)的前端专属逻辑导致的,和后端实现无关,具体拆解如下:

  • 你疑惑的流程第3步,在Swagger UI场景下的完整逻辑为:
    1. 点击「Authorize」按钮提交账号密码后,Swagger UI会自动调用/token接口获取返回的access_token
    2. 该token仅存储在Swagger UI前端运行时的内存变量中,不会写入浏览器的Cookie、localStorage、sessionStorage任何持久化存储位置
    3. 后续你在当前Swagger UI页面发起任何接口请求时,Swagger UI的内置请求逻辑会自动从内存变量中取出token,拼接为Authorization: Bearer {token}格式加到请求头中再发送
  • 你排查到的两个现象完全匹配该逻辑:
    1. 由于token仅存于运行内存,你在浏览器的各类持久化存储中自然找不到相关记录
    2. 刷新页面、新开标签页都会销毁当前Swagger UI的运行实例,内存中的变量会被直接清空,授权状态也就丢失了
业务开发补充说明

官方教程没有提及这部分逻辑,是因为token的存储、请求头拼接属于客户端实现范畴,FastAPI作为后端框架只负责服务端的token校验逻辑,不会对客户端实现做强制约束。实际开发自有前端项目时,常见的处理方案为:

  • 拿到后端返回的access_token后,根据业务安全需求选择存储位置:需要长期留存可存localStorage,仅当前标签页生效存sessionStorage,要防XSS攻击可选HttpOnly Cookie
  • 封装前端请求工具的拦截逻辑(比如axios请求拦截器),每次发请求前从存储位置读取token,自动拼接到Authorization请求头中即可

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:15:00