JWT与Token

发布时间:2026/9/23 15:44:23

JWT与Token 关于苍穹外卖中JWT 令牌知识总结Token 和 JWT 前置知识TokenToken 本质就是后端发给前端的一串字符串作为登录通行证。前端登录成功拿到它之后每次请求接口在请求头带上这串字符串后端识别你已经登录了允许访问。Token 有很多的实现方式比如 SessionIdJWT 等JWT 是一种特定结构的 Token 字符串三段构成Header记录加密算法比如 HS 256Payload载荷claims存放业务数据比如员工 id、过期时间等Signature 签名校验 Header 和 Payload 有没有被篡改计算公式Signature HMAC-SHA256( Header Payload secretKey )其中 secretKey 是 yml 中配置的 itcast。苍穹外卖员工登录完整流程串起 JWT员工账号密码登录校验成功后端准备 Payload存入 employeeId设置过期时间后端读取 yml 的 secretKeyitcast根据 Header、Payload、itcast 计算签名拼接三段 →生成 JWT 字符串把这个 JWT 字符串返回前端这个字符串在代码里就叫 token前端保存 token后续访问接口请求头带上token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9......后端 JWT 拦截器从请求头取出 tokenJWT 字符串拆分三段取出 Header、Payload、Signature用同样的密钥 itcast拿 HeaderPayload 重新计算一遍签名对比新算出来的签名 和 token 自带的签名✅ 相等没有被篡改。再判断是否过期。解析 Payload 拿到 employeeId存入 BaseContext放行。❌ 不相等Payload 被人改过直接拦截。用代码方式解释EmployeeControllerPostMapping(/login) public ResultEmployeeLoginVO login(RequestBody EmployeeLoginDTO employeeLoginDTO) { log.info(员工登录{}, employeeLoginDTO); Employee employee employeeService.login(employeeLoginDTO); //登录成功后生成jwt令牌 MapString, Object claims new HashMap(); claims.put(JwtClaimsConstant.EMP_ID, employee.getId()); String token JwtUtil.createJWT( jwtProperties.getAdminSecretKey(), jwtProperties.getAdminTtl(), claims); EmployeeLoginVO employeeLoginVO EmployeeLoginVO.builder() .id(employee.getId()) .userName(employee.getUsername()) .name(employee.getName()) .token(token) .build(); return Result.success(employeeLoginVO); }claims是 JWT 载荷payload也就是存在 token 里面的数据数据结构是 hashmap键值对 EMP_ID–employeeId这里存了 employee 的 id⚠️claims 中的数据并不是加密所以不要放手机号等敏感信息createJWT是调用 JwtUtil 工具类预制的方法来生成 token实现代码如下/** * 生成JWT字符串 * param secretKey 签名密钥yml里的 itcast * param ttlMillis 过期时长单位毫秒7200000 2小时 * param claims 载荷存放业务数据比如员工id * return JWT字符串就是我们代码里说的token */ public static String createJWT(String secretKey, long ttlMillis, MapString, Object claims) { // 指定签名的时候使用的签名算法也就是header那部分 SignatureAlgorithm signatureAlgorithm SignatureAlgorithm.HS256; // 生成JWT的过期时间 long expMillis System.currentTimeMillis() ttlMillis; Date exp new Date(expMillis); // 设置jwt的body JwtBuilder builder Jwts.builder() // 放入自定义载荷业务数据比如employeeId .setClaims(claims) // 设置签名算法 密钥secretKey .signWith(signatureAlgorithm, secretKey.getBytes(StandardCharsets.UTF_8)) // 设置过期时间 .setExpiration(exp); // 拼接成三段式JWT字符串返回 return builder.compact(); }其中 controller 层中的jwtProperties.getAdminSecretKey(),jwtProperties.getAdminTtl(),分别代表JWT 签名重要组成部分 secretKey和过期时间这两个是在 yml 中配置的sky: jwt: # 设置jwt签名加密时使用的秘钥 admin-secret-key: itcast # 设置jwt过期时间 admin-ttl: 7200000 # 设置前端传递过来的令牌名称 admin-token-name: token在此强调itcast 的意义我们需要知道首先 itcast 是是一串固定的密码密钥是整个后端项目共用的所有管理员用户都共用这同一个密钥不是某一个人的专属标识生成 token 时候需要签名payloadheader而签名是使用 HeaderPayloaditcast 做 HS256 加密生成的Payload 就是 claimsemployeeId是 token 的具体数据而在校验 token 的时候拦截器拿到前端传的 token拿 itcast 因为 itcast 不会变化计算签名itcastpayloadheader和 token 中的第三段原来的签名如果是签名一致合法不一致不合法拒绝访问通过后再校验过期时间解析出empId存入BaseContext放行请求。请求结束后清理ThreadLocal。
延伸阅读

更多相关文章

2026/9/23 15:39:23

2026年学术写作必备:降AI率工具测评与使用指南

1. 2026年学术写作新挑战:为什么降AI率工具成为本科生刚需?去年指导学弟修改毕业论文时,他遇到了一个典型问题:自己撰写的文献综述部分在知网AI检测中显示42%的AI率,而学校要求必须控制在15%以下。这种情况在2026年已经…

2026/9/23 15:39:23

CBB21与CBB21B封装差异导致脉动电流失效的本质原因

简介:本资源是一份面向电子工程师、硬件开发人员及电子类专业学生的元器件应用技术资料,聚焦CBB21与CBB21B型金属化聚丙烯薄膜直流电容器的选型、特性与实际应用场景。资料系统解析两类电容在封装结构(阻燃环氧树脂 vs 塑料壳)、电…

2026/9/23 16:29:29

短消息中心业务功能详解:从提交转发到鉴权排障

简介:这份PPT《试谈短消息中心业务功能》面向移动通信网络工程师、运维人员及相关专业学生,系统讲解短消息中心(SMS Center)在真实网络中的业务处理流程。内容从短消息提交校验与入队确认讲起,依次覆盖转发频度自动调节…

2026/9/23 16:29:29

如何识别AI套壳产品:技术验证与商业分析

1. 项目概述:AI套壳现象的本质与识别价值最近半年AI行业出现一个有趣现象:大量标榜"自主研发"的AI产品,实际只是对主流大语言模型的API封装。这种现象被业内称为"AI套壳",就像给现成的产品套上自家包装。作为…

2026/9/23 12:07:00

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/23 0:01:54

3个实战技巧搞定形式英语:从看教程到跑通性能优化

3个实战技巧搞定形式英语:从看教程到跑通性能优化 看了一堆教程还是不会写项目?别慌,这种“眼高手低”的困境在开发者圈子里太常见了。很多人以为卡点在语法,其实真正拦路虎是缺乏将知识点串联成完整链路的能力。今天咱们不聊虚的,直接拿【形式英语】这…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码