news 2026/6/1 5:54:58

实战--4

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
实战--4

一、JWT 基础概念

JWT(JSON Web Token)是一种基于 Token 的登录认证技术,流程如下:

  1. 用户登录成功后,后端生成加密的 Token,返回给客户端。
  2. 客户端后续请求时携带 Token,后端验证 Token 合法性,判断用户是否已登录。

JWT 的三部分组成(必考)

表格

部分作用说明
Header(头部)声明算法和 Token 类型固定结构{"type":"JWT","alg":"HS256"}
Payload(载荷)存储自定义信息userId、过期时间等;注意:可被解密,不能存敏感信息(如密码)
Signature(签证)安全校验核心由 Header + Payload + 密钥加密生成,后端通过它验证 Token 是否被篡改

JWT 验证的核心,就是校验Signature部分是否合法。


二、createToken方法解析(生成 Token)

java

运行

public static String createToken(Long userId){ Map<String,Object> claims = new HashMap<>(); claims.put("userId",userId); JwtBuilder jwtBuilder = Jwts.builder() .signWith(SignatureAlgorithm.HS256, jwtToken) // 签发算法:HS256,密钥为jwtToken .setClaims(claims) // 存入自定义数据(userId) .setIssuedAt(new Date()) // 设置签发时间 .setExpiration(new Date(System.currentTimeMillis() + 24 * 60 * 60 * 1000)); // 过期时间:1天 String token = jwtBuilder.compact(); return token; }

逐行解析

  1. claims载荷数据:创建HashMap,存入自定义信息userId,后续可在 Token 中取出。
  2. signWith签名算法:使用HS256对称加密算法,密钥为全局变量jwtToken(需提前定义)。
  3. setClaims(claims):将userId存入 JWT 的Payload部分。
  4. setIssuedAt:记录 Token 的签发时间。
  5. setExpiration:设置过期时间为当前时间 + 1 天,超时后 Token 失效。
  6. compact():将 Header、Payload、Signature 三部分拼接,生成最终的 Token 字符串。

三、checkToken方法解析(校验 Token)

java

运行

public static Map<String, Object> checkToken(String token){ try { Jwt parse = Jwts.parser().setSigningKey(jwtToken).parse(token); return (Map<String, Object>) parse.getBody(); }catch (Exception e){ e.printStackTrace(); } return null; }

逐行解析

  1. Jwts.parser().setSigningKey(jwtToken).parse(token): 使用和生成 Token 相同的密钥jwtToken解析 Token,校验 Signature 签名是否合法。
    • 若 Token 被篡改、过期或密钥不匹配,会直接抛出异常,进入catch块。
  2. parse.getBody():校验通过后,取出Payload中的数据(如userId),返回给调用方。
  3. 异常处理:解析失败时打印错误栈,返回null,表示 Token 无效。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 5:54:56

排名系统脆弱性分析:Bradley-Terry模型如何被小规模攻击颠覆

1. 项目概述&#xff1a;当排名系统遭遇“精准狙击”在推荐系统、在线竞赛、甚至民主选举中&#xff0c;我们常常依赖一种看似客观的数学工具来从嘈杂的个体偏好中提炼出集体共识&#xff1a;基于成对比较的排名系统。想象一下&#xff0c;你正在组织一场“最佳开源项目”的社区…

作者头像 李华
网站建设 2026/6/1 5:50:55

MATLAB齿轮齿根弯曲疲劳强度校核工具(国标ISO双标准)

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;一套开箱即用的MATLAB计算工具&#xff0c;专注齿轮齿根在交变载荷下的弯曲疲劳强度校核。核心脚本wan_qu_pi_lao_qiang_du.m支持输入模数、齿数、材料屈服强度/疲劳极限、载荷谱、安全系数等参数&#xff0c;自…

作者头像 李华
网站建设 2026/6/1 5:48:53

最大公约数与最小公倍数

最大公约数与最小公倍数 #include<bits/stdc.h> using namespace std; long long gcd(int a,int b) {return b?gcd(b,a%b):a; }//欧几里得算法 long long lcm(int a,int b,long long gcd1){gcd1gcd(a,b);return a/gcd1*b;//先除后乘 } int main(){int a,b;cin>>a&…

作者头像 李华
网站建设 2026/6/1 5:43:56

【元器件专题】MOS管开通过程波形分析

Vgs表示的是Cgs电容两端的电压&#xff0c;粉丝这条线. 绿线表示的MOS管的DS电压&#xff0c;也就是Vds&#xff0c;没开通时310V. 在t0-t1时刻&#xff0c;MOS管开通阈值前&#xff0c;MOS管截止&#xff0c;此时Vds310V&#xff0c;流过DS的电流Id0A。 从MOS管开始导通到Vg…

作者头像 李华