新闻详情

新闻详情

首页 / 资讯中心 / 详情

JWT与Token

发布时间:2026/11/12 8:12:49来源:尧图网络
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。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/11 9:31:44

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/11 5:36:08

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/11 15:37:39

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉