JWT令牌类型全解析:Bearer、JWT与Refresh

在 JWT(JSON Web Token)体系中,token_type 字段是一个可选但常见的字段,用于明确 Token 的类型和用途。它通常出现在响应头或 Token 的负载(payload)中。


✅ 常见的 token_type 及其作用

Token Type 作用说明 典型使用场景
bearer 最常见类型,表示"携带者"令牌(Bearer Token),即持有者即可访问资源。 所有基于 OAuth2 / JWT 的 API 认证。例如:Authorization: Bearer eyJhbGciOiJSUzI1Ni...
mac 用于 HMAC(基于密钥的哈希消息认证码)签名的 Token,通常用于 OAuth 1.0a。 OAuth 1.0a 协议(现已较少使用)。
jwt 明确表示这是一个 JWT 格式的 Token(虽然 bearer 也能是 JWT,但 jwt 更明确)。 用于区分 JWT 和非 JWT 的 Bearer Token(如某些自定义 Token)。
refresh 专门用于刷新访问 Token 的 Token。它本身不能访问资源,只能换取新的 access_token 实现"长期登录"或"自动续期"功能(如 Refresh Token 机制)。

🔍 详细说明与最佳实践

1. bearer ------ 最常用,推荐使用

  • 含义:持有者可以使用该 Token 访问资源。

  • 标准支持:HTTP Bearer Token 是 OAuth 2.0 的标准认证方式。

  • 推荐用法

    http 复制代码
    Authorization: Bearer eyJhbGciOiJSUzI1Ni...

绝大多数现代系统(包括 FastAPI + JWT)都使用 bearer


2. jwt ------ 标识 Token 格式

  • 作用:明确该 Token 是一个标准的 JWT(JSON Web Token)。

  • 使用场景 :当你在多个 Token 类型共存的系统中(如同时支持 JWT 和自定义 Token),可以使用 jwt 来区分。

  • 示例

    json 复制代码
    {
      "access_token": "eyJhbGciOiJSUzI1Ni...",
      "token_type": "jwt",
      "expires_in": 1800
    }

建议在返回 Token 的响应中包含 token_type: jwt,以增强清晰度。


3. refresh ------ 用于刷新访问 Token

  • 作用 :用于获取新的 access_token,防止用户频繁登录。
  • 生命周期 :通常比 access_token 长(如 7 天、30 天),但不能用于访问资源。
  • 使用流程
    1. 用户登录,获取 access_tokenrefresh_token
    2. access_token 过期后,用 refresh_token 请求新 Token。
    3. 服务器验证 refresh_token 是否有效,若有效则返回新的 access_token

强烈建议在支持"长期登录"的系统中使用 refresh_token


📌 总结:如何选择 token_type

场景 推荐 token_type
一般 API 认证(FastAPI + JWT) bearer(或 bearer + jwt
明确 Token 是 JWT 格式 jwt
支持"记住我"或自动续期 refresh
使用 OAuth 1.0a(不推荐) mac

✅ 最佳实践建议(FastAPI 项目)

json 复制代码
{
  "access_token": "eyJhbGciOiJSUzI1Ni...",
  "token_type": "bearer",
  "expires_in": 1800,
  "refresh_token": "refresh.eyJhbGciOiJSUzI1Ni...",
  "refresh_token_type": "refresh"
}
相关推荐
૮・ﻌ・2 天前
Node.js - 04:MongoDB、会话控制
数据库·mongodb·node.js·jwt·token·cookie·session
indexsunny2 天前
互联网大厂Java面试实战:从Spring Boot到微服务架构的音视频场景解析
java·spring boot·spring cloud·mybatis·spring security·jwt·flyway
没有bug.的程序员3 天前
撕裂微服务网关的认证风暴:Spring Security 6.1 与 JWT 物理级免登架构大重构
java·spring·微服务·架构·security·jwt
独断万古他化4 天前
【抽奖系统开发实战】Spring Boot 项目的用户模块设计:注册登录、权限管控与敏感数据加密
java·spring boot·redis·后端·mvc·jwt·拦截器
loriloy4 天前
Electron 桌面端身份认证 - 本地回环重定向认证 Loopback Interface Redirection
electron·登录认证
追光少年33226 天前
支付宝第三方登录集成教程:从申请到实现
前端开发·支付宝·oauth2.0·后端开发·第三方登录·api集成
沉默-_-9 天前
JWT详解:从登录认证到令牌验证
jwt·javaee
修行者Java9 天前
(八)从“认证混乱难管控”到“JWT高效赋能”——JWT实战进阶指南
认证·jwt
淡笑沐白9 天前
.NET Core Web API JWT认证实战指南
c#·jwt·.netcoreweb api
曲幽17 天前
不止于JWT:用FastAPI的Depends实现细粒度权限控制
python·fastapi·web·jwt·rbac·permission·depends·abac