Day49(19)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project02\tlias-web-management
登录设置
HTTP:无状态响应:本次响应不携带上一次响应内容
cookie
JWT令牌
老版本
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.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. 复制必要的常量和辅助方法:abcdefghijklmnopqrstuvwxyz0123456789
private static final String SECRET_KEY = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5";
private static SecretKey getSigningKey() {
byte[] keyBytes = Decoders.BASE64.decode(SECRET_KEY);
return Keys.hmacShaKeyFor(keyBytes);
}
/**
* 生成JWT令牌新版本
*/
@Test
public 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);
}
@Test
public 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();
}
}

浙公网安备 33010602011771号