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 天前
【JavaEE34-博客系统案例实战】从零开始撸一个博客系统(二):登录 + JWT令牌 + 强制登录,让系统先有“门卫”
jwt·博客系统·java实战
indexsunny2 天前
互联网大厂Java面试实录:Spring Boot到微服务的深入探讨
java·spring boot·微服务·面试·eureka·kafka·jwt
弹简特3 天前
【JavaEE】JWT令牌:签名、密钥、生成令牌、校验令牌、编码、解码,一篇文章彻底讲透
jwt·密钥
庞轩px6 天前
JWT与Session比较
jwt·session·登录鉴权·无状态
庞轩px7 天前
JWT + Redis 双 Token 机制:从原理到实战
数据库·redis·缓存·jwt·token·登录认证
带娃的IT创业者8 天前
WeClaw_43_双重认证与Token自动刷新:Device Fingerprint与JWT安全机制
jwt·认证机制·双重认证·设备指纹·token刷新·http安全
૮・ﻌ・22 天前
Node.js - 04:MongoDB、会话控制
数据库·mongodb·node.js·jwt·token·cookie·session
indexsunny22 天前
互联网大厂Java面试实战:从Spring Boot到微服务架构的音视频场景解析
java·spring boot·spring cloud·mybatis·spring security·jwt·flyway
没有bug.的程序员23 天前
撕裂微服务网关的认证风暴:Spring Security 6.1 与 JWT 物理级免登架构大重构
java·spring·微服务·架构·security·jwt
独断万古他化24 天前
【抽奖系统开发实战】Spring Boot 项目的用户模块设计:注册登录、权限管控与敏感数据加密
java·spring boot·redis·后端·mvc·jwt·拦截器