当前位置: 首页 > news >正文

Day49(19)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project02\tlias-web-management

登录设置

image-20251128135124345

image-20251128143640985

HTTP:无状态响应:本次响应不携带上一次响应内容

image-20251128144110139

image-20251128144715786

image-20251128151521020

image-20251128151618478

image-20251128153128208

image-20251128153153061

image-20251128153429284

image-20251128153527031

image-20251128153458955

JWT令牌

image-20251128165409248

image-20251128165500065

老版本

package com.itheima;import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;import java.util.Date;
import java.util.HashMap;public class JwtTest {/*** 生成JWT令牌旧版本*/@Testpublic void testGenerateJwt(){HashMap<String, Object> dataMap = new HashMap<>();dataMap.put("id",1);dataMap.put("username","admin");String jwt = Jwts.builder().signWith(SignatureAlgorithm.HS256, "aXRoZWltYQ==")//指定加密算法和密钥.addClaims(dataMap)//添加自定义信息.setExpiration(new Date(System.currentTimeMillis() + 60 * 1000))//设置过期时间.compact();//生成令牌System.out.println(jwt);}/***解析JWT令牌*/@Testpublic void testParseJWT(){String token = "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsImV4cCI6MTc2NDMyMjE2NH0.AlOIPixvMm1I9oMyl8bkaVTITrtvKpICIoH-xZGZbC0";Claims claims = Jwts.parser().setSigningKey("aXRoZWltYQ==")//指定密钥.parseClaimsJws(token)//解析令牌.getBody();//获取自定义信息System.out.println(claims);}
}

image-20251128174124636

image-20251128174306864

package com.itheima;import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;import java.util.Date;
import java.util.HashMap;public class JwtTest {
//    /**
//     * 生成JWT令牌旧版本
//     */
//    @Test
//    public void testGenerateJwt(){
//        HashMap<String, Object> dataMap = new HashMap<>();
//        dataMap.put("id",1);
//        dataMap.put("username","admin");
//
//        String jwt = Jwts.builder().signWith(SignatureAlgorithm.HS256, "aXRoZWltYQ==")//指定加密算法和密钥
//                .addClaims(dataMap)//添加自定义信息
//                .setExpiration(new Date(System.currentTimeMillis() + 60 * 1000))//设置过期时间
//                .compact();//生成令牌
//        System.out.println(jwt);
//    }
//    /**
//     *解析JWT令牌
//     */
//    @Test
//    public void testParseJWT(){
//        String token = "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsImV4cCI6MTc2NDMyMjE2NH0.AlOIPixvMm1I9oMyl8bkaVTITrtvKpICIoH-xZGZbC0";
//        Claims claims = Jwts.parser().setSigningKey("aXRoZWltYQ==")//指定密钥
//                .parseClaimsJws(token)//解析令牌
//                .getBody();//获取自定义信息
//        System.out.println(claims);
//    }
}
package com.itheima;import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.JwtParserBuilder;
import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.security.Keys;
import org.junit.jupiter.api.Test;
import io.jsonwebtoken.Jwts;import javax.crypto.SecretKey;
import java.security.Key;
import java.util.Date;
import java.util.HashMap;public class JwtNewTest {// 1. 复制必要的常量和辅助方法:abcdefghijklmnopqrstuvwxyz0123456789private static final String SECRET_KEY = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5";private static SecretKey getSigningKey() {byte[] keyBytes = Decoders.BASE64.decode(SECRET_KEY);return Keys.hmacShaKeyFor(keyBytes);}/*** 生成JWT令牌新版本*/@Testpublic void testGenerateJwt(){HashMap<String, Object> map = new HashMap<>();map.put("id",1);map.put("username","admin");String jwt = Jwts.builder().signWith(getSigningKey())//密钥:新版的需要.claims(map)//自定义信息.expiration(new Date(System.currentTimeMillis() + 3600 * 1000)).compact();System.out.println(jwt);}@Testpublic void testParseJWT(){String token = "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsImV4cCI6MTc2NDMyODA0OH0.-P0YM86RPP7hTyPQ8ULO8Y-yedAbubi94G8Xs0JKcUA";Claims claims = Jwts.parser().verifyWith(getSigningKey()).build().parseSignedClaims(token)//返回 Jwt<Claims> 对象,封装了JWT令牌的完整结构.getPayload();//提取实际数据的关键步骤System.out.println(claims);}
}
package com.itheima.utils;import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.io.Decoder;
import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.security.Keys;import javax.crypto.SecretKey;
import java.security.Key;
import java.util.Date;
import java.util.Map;import static org.yaml.snakeyaml.tokens.Token.ID.Key;public class JwtUtils {private static final String SECRET_KEY = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5";private static final long EXPIPRATION = 7*24*60*60*1000;//7天public static SecretKey getSigningKey(){byte[] decode = Decoders.BASE64.decode(SECRET_KEY);return Keys.hmacShaKeyFor(decode);}/*** 生成JWT令牌* @param map* @return*/public static String generateKey(Map<String,Object>map){return Jwts.builder().signWith(getSigningKey()).claims(map).expiration(new Date(System.currentTimeMillis()+EXPIPRATION)).compact();}/*** 解析令牌* @param token* @return*/public static Claims parseToken(String token) throws Exception{return Jwts.parser().verifyWith(getSigningKey()).build().parseSignedClaims(token).getPayload();}
}
http://www.gsyq.cn/news/64362.html

相关文章:

  • 人工智能:用Gemini3一分钟生成手势控制3D粒子交互系统
  • 酶蛋白定向进化难题?泰克生物酵母展示服务,高效筛选“高活性酶”突变体
  • 上两个GPT写的锁,一个是文件锁,一个是Redis锁,写的那是相当的完美
  • 11月27号
  • 了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数
  • 2025全年套管、绝缘套管、热收缩套管、热缩套管、热缩管厂家综合推荐与选购指南
  • MySQL的IFNULL()、ISNULL()、NULLIF()函数用法说明
  • Jenkins 已成过去式!新兴替代软件GitHub Actions即将崛起
  • P12828
  • XYD11.25模拟赛
  • day13-影刀RPA01
  • P2754
  • P10173
  • HTML表格列表
  • R语言包的几种安装形式
  • 详细介绍:计算机操作系统:用户层的I/O软件
  • 2025年11月上海水溶肥设备厂家推荐前十指南:专业选择与经验分享
  • 国内振动台厂家推荐:技术积累与行业服务能力观察
  • AI实现类人推理的技术探索
  • CSS基础--面向后端需要了解的前端知识
  • 2025年下半年江苏煤矿智能化/智能煤流系统开发公司综合推荐指南
  • 使用Postman进行接口测试、接口自动化和集成CI/CD
  • 信创环境下的一体化全栈智能运维
  • 28223E2125263E2121203E212424384722B0开
  • 【251128】CF2164 Div.1+2 vp 总结
  • 2025年四川成都奖杯奖牌定制、奖章证书定制、奖杯定制、水晶奖杯定制、奖牌定制品牌厂家企业推荐top5指南
  • 基于PyTorch的YOLOv5目标检测 - 教程
  • 2025年工业冷风机车间降温技术全解析,铁皮棚车间降温/焊装车间通风降温/压铸车间通风降温/机械厂车间降温工业冷风机厂商推荐排行
  • 2025非遗新中式品牌排行TOP榜,这些品牌正走红,非遗新中式推荐排行色麦新中式层层把关品质优
  • 2025年靠谱的四川变形缝_变形缝厂家实力及口碑推荐榜