当前位置: 首页 > 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.jsqmd.com/news/54326/

相关文章:

  • Azure DevOps Server 2022.2 补丁(Patch 7)
  • U636462 无根树
  • 人工智能:用Gemini3一分钟生成手势控制3D粒子交互系统
  • 酶蛋白定向进化难题?泰克生物酵母展示服务,高效筛选“高活性酶”突变体
  • 2025年免费简历模板排行榜:媲美付费版的优质选择
  • 考场备忘录
  • 软件测试:基本概念二
  • docker 复制远程镜像本地并创建容器
  • 上两个GPT写的锁,一个是文件锁,一个是Redis锁,写的那是相当的完美
  • DP动态规划进阶
  • 笔记本电脑外接显示器偶尔不亮
  • 11月27号
  • 小马算力助力”欧陆词典翻译引擎“
  • 2025-11-27-模拟赛
  • 软件测试:基础概念一
  • 11月28号
  • 了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数
  • 2025全年套管、绝缘套管、热收缩套管、热缩套管、热缩管厂家综合推荐与选购指南
  • Java 并发编程的演进与实践:从线程到虚拟线程的新时代
  • MySQL的IFNULL()、ISNULL()、NULLIF()函数用法说明
  • WebMvcConfig 和 WebSecurityConfig 详解 - 实践
  • Jenkins 已成过去式!新兴替代软件GitHub Actions即将崛起
  • P12828
  • XYD11.25模拟赛
  • HTML---------------示例代码(1)
  • xenomai3 pcie网卡偶发性的oops
  • OOP-实验4 - FF
  • day13-影刀RPA01
  • 6001 week1
  • 11月28日总结 - 作业----