代码语言:javascript复制
package com.adingxiong.pm.util;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class TokenUtils {
//加密的秘钥 相当于服务器的秘钥 一定保管好 不能泄露
private static final String secret = "secret";
//后去token的key 一般token存在请求头和响应头中
public static final String tokenHeader = "tokenHeader";
//token失效的时间 这里设置的是 20分钟
private static final Long expTime =60*2*10000L;
public static String getToken (String id, String name){
//这里的参数是自己定义的 可以根据每个人的需求定制不同的生成贵族
String UUID = "这是额外信息 , UUIDkye";
Map<String ,Object> map = new HashMap<>();
map.put("uuidkey" ,UUID);
JwtBuilder builder = Jwts.builder();
String token = builder
.signWith(SignatureAlgorithm.HS256,secret) //加密方式
.setId(UUID) //设置token生成的关键信息
.setSubject(name)
.setIssuedAt(new Date()) //设置token生效时间
.setExpiration(new Date(System.currentTimeMillis() expTime)) //设置token失效时间
.addClaims(map)
.compact();
System.out.println("生成的Token : " token);
return token;
}
/**
* 从token中 提取封装的信息
* @param token
* @return
*/
public static Claims getTokenBody(String token){
Claims claims = Jwts.parser().setSigningKey(secret)
.parseClaimsJws(token).getBody();
return claims;
}
public static String getUserName (String token){
Claims claims = getTokenBody(token);
String name = claims.getSubject();
return name;
}
public static String getId (String token){
Claims claims = getTokenBody(token);
String id = claims.getId();
return id ;
}
public static String getKey (String token ,String key){
Claims claims = getTokenBody(token);
String uuidkey = (String)claims.get(key);
return uuidkey;
}
public static void main (String args []){
String token = getToken("1" ,"熊超");
System.out.println("生成的token为:" token);
String name = getUserName(token);
System.out.println("name:" name);
String id = getId(token);
System.out.println("id:" id);
String uuidkey = getKey(token ,"uuidkey");
System.out.println("uuidkey:" uuidkey);
}
}