package com.cy.utils;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
public class JWTUtils {
private static final String SIGN = "GJLKB%g$H9J11232"; //签名秘钥
private static final Integer EXP = 7; //过期时间
/**
* 生成token
* @Param map payload信息
* @Return token
* */
public static String getToken(Map<String,String> map){
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, EXP);
//创建JWT构造器
JWTCreator.Builder builder = JWT.create();
// header默认的,不需要设置
//设置payload
builder.withExpiresAt(calendar.getTime());
//遍历添加payload
map.forEach((k,v)->{
builder.withClaim(k,v);
});
//设置签名
String token = builder.sign(Algorithm.HMAC256(SIGN));
return token;
}
/**
* 验证JWT
* @Param token
* @Return DecodedJWT 验证通过,返回有效值,验证不通过,返回null
* */
public static DecodedJWT verify(String token){
try{
DecodedJWT jwtToken = JWT.require(Algorithm.HMAC256(SIGN)).build().verify(token);
System.out.println(jwtToken);
return jwtToken;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
/**
* 获取JWT的payload信息
* 可不写这个方法,由verify()完成了功能
* */
public static DecodedJWT getTokenInfo(String token){
return JWT.require(Algorithm.HMAC256(SIGN)).build().verify(token);
}
//测试
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("username","zhangsan");
map.put("userId","12345");
String token = JWTUtils.getToken(map);
DecodedJWT jwtToken = JWTUtils.verify(token);
System.out.println(jwtToken.getClaim("username").asString());
System.out.println(jwtToken.getClaim("userId").asString());
}
}
JWTToken工具类
最新推荐文章于 2024-05-29 16:13:40 发布