Bearer Token介绍

一、Bearer Token 是什么?

Bearer Token(译为 "持有者令牌")是一种 HTTP 协议下的轻量级鉴权凭证,本质是一串无意义的字符串(通常由字母、数字、特殊符号组成),由服务器在用户首次认证(如输入账号密码、扫码登录)后生成并返回给客户端(如浏览器、App)。

"Bearer"(持有者)的核心含义是:谁持有这串令牌,服务器就认为谁是合法用户,无需再验证令牌持有者的身份细节(如 "你是谁"),只需验证令牌本身的有效性(如 "令牌是否真实、是否过期")。

二、Bearer Token 的核心作用

它的核心目标是 解决 "客户端与服务器之间安全、高效的身份验证" 问题,具体作用可拆解为以下 4 点:

1. 替代传统明文认证,提升安全性

传统的 HTTP 基础认证(Basic Auth)会将 "账号:密码" 用 Base64 编码后直接传输(本质仍是明文,可轻易解码),而 Bearer Token 是服务器生成的 "临时凭证":

  • 令牌本身不包含用户敏感信息(如密码),即使泄露,攻击者也无法反向推导出用户账号密码;
  • 令牌可设置短期有效期,降低泄露后的风险范围。

2. 简化后续请求的鉴权流程,提升效率

用户只需在首次登录时提交真实凭证(如账号密码),后续向服务器发起请求时,无需重复提交敏感信息,只需在 HTTP 请求头中携带 Bearer Token 即可,流程极大简化:

  1. 客户端首次认证:提交 账号+密码 → 服务器验证通过 → 返回 Bearer Token
  2. 客户端后续请求:在请求头中携带 Authorization: Bearer <令牌字符串> → 服务器验证令牌有效 → 允许访问资源。

3. 支持跨域、跨平台场景

Bearer Token 与客户端类型(浏览器、App、小程序)、部署环境(前端、后端服务)无关,只需在请求中正确携带令牌即可鉴权,因此广泛用于:

  • 前后端分离项目(如 Vue/React 前端调用后端 API);
  • 跨域请求(如 A 域名的前端调用 B 域名的 API);
  • 第三方服务调用(如 App 调用微信、支付宝的开放 API)。

4. 灵活控制权限范围(配合令牌内容设计)

虽然 Bearer Token 本身是 "无意义字符串",但服务器可在生成令牌时,将用户的权限信息(如 "只能访问订单列表,不能修改订单")、用户 ID 等数据加密存储在令牌中(如 JWT 格式的 Bearer Token),后续验证令牌时可直接解析出权限,实现 "精细化权限控制"。

三、Bearer Token 的使用规范(关键细节)

  1. 必须通过 HTTPS 传输

    Bearer Token 是 "身份凭证",若通过 HTTP 明文传输,可能被中间人劫持并盗用,因此强制要求在 HTTPS 协议下使用,通过加密传输保护令牌安全。

  2. 请求头格式固定

    客户端携带令牌时,必须遵守 HTTP 规范,在 Authorization 请求头中按以下格式填写:

    http

    makefile 复制代码
    Authorization: Bearer <你的令牌字符串>

    例如:

    http

    makefile 复制代码
    Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...(后续省略)

    注意:Bearer 后必须跟一个空格,再拼接令牌字符串,格式错误会导致鉴权失败。

  3. 令牌的生命周期管理

    • 服务器会为 Bearer Token 设置过期时间(如 2 小时),过期后客户端需重新发起认证获取新令牌;
    • 若用户主动登出,客户端需删除本地存储的令牌,服务器也可在后台 "拉黑" 已失效的令牌(防止被盗用)。

四、常见误区:Bearer Token ≠ JWT

很多人会将 Bearer Token 与 JWT(JSON Web Token)混淆,其实二者是 "凭证类型" 与 "具体实现格式" 的关系:

  • Bearer Token:是一种 "鉴权方案"(定义了 "如何用令牌鉴权" 的规则);

  • JWT :是 Bearer Token 的一种常见数据格式(将用户信息、过期时间等用 JSON 结构存储并加密,便于服务器解析)。

除了 JWT,Bearer Token 也可以是随机生成的字符串(如 UUID),服务器通过查询数据库 / 缓存验证令牌是否存在、是否有效。

五、应用场景举例

  • 手机 App 登录:用户输入手机号 + 验证码后,App 收到服务器返回的 Bearer Token,后续刷首页、查订单时,所有 API 请求都会携带该令牌;
  • 第三方接口调用:开发者在平台申请 API 密钥后,通过密钥换取 Bearer Token,调用接口时携带令牌证明 "我是已授权的开发者";
  • 前后端分离项目:前端登录成功后存储 Token,每次发请求时通过 Axios 拦截器自动在请求头添加 Authorization: Bearer xxx
相关推荐
掘金安东尼1 分钟前
Rspack 推出 Rslint:一个用 Go 编写的 TypeScript-First Linter
前端·javascript·github
一枚前端小能手1 分钟前
正则~~~来看这里
前端·正则表达式
你听得到115 分钟前
弹窗库1.1.0版本发布!不止于统一,更是全面的体验升级!
android·前端·flutter
RaidenLiu6 分钟前
Riverpod 3 :掌握异步任务处理与 AsyncNotifier
前端·flutter
前端付豪10 分钟前
🔥Vue3 Composition API 核心特性深度解析:为什么说它是前端的“终极武器”?
前端·vue.js
tingting011910 分钟前
Spring Boot 外部配置指定不生效的原因与解决
java·spring boot·后端
skeletron201120 分钟前
【基础】React工程配置(基于Vite配置)
前端
2501_9096867021 分钟前
基于SpringBoot的网上点餐系统
java·spring boot·后端
怪可爱的地球人21 分钟前
前端
天天摸鱼的java工程师27 分钟前
聊聊线程池中哪几种状态,分别表示什么?8 年 Java 开发:从业务踩坑到源码拆解(附监控实战)
java·后端