代码中公用生成使用token方法

生成使用token

引入pom
<dependency>
          <groupId>com.auth0</groupId>
          <artifactId>java-jwt</artifactId>
          <version>3.14.0</version>
      </dependency>
添加工具类
package com.mashibing.interinalcommon.util;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;

import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class JwtUtil {

// 盐
private static final String SIGN = "CPE!@#";

private static final String JWT_KEY = "passengerPhone";

public static String genertorToken(String passengerPhone){
HashMap<String, String> map = new HashMap<>();
map.put(JWT_KEY, passengerPhone);
// 设置 token 过期时间 1 天
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE,1);
Date date = calendar.getTime();
JWTCreator.Builder builder = JWT.create();

// 将 token 进行遍历 方到 map 中
map.forEach(
(k,v) ->{
builder.withClaim(k,v);
}
);

// 整合 过期时间
builder.withExpiresAt(date);

// 生成 token
String sign = builder.sign(Algorithm.HMAC256(SIGN));

return sign;
}

//解析token
public static String parseToken(String token){
DecodedJWT verify = JWT.require(Algorithm.HMAC256(SIGN)).build().verify(token);
Claim claim = verify.getClaim(JWT_KEY);
return claim.asString();
}

public static void main(String[] args) {

// 传入 号码,返回token
String token = genertorToken("18822100030");
System.out.println("token = " + token);
// 将token 解析 生成原数据
String date = parseToken(token);
System.out.println("原生数据 = " + date);
// token = eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb2RlIjoiMTAwODYxMTU0IiwibmFtZSI6IuW8oOS4iSIsImV4cCI6MTcwMjA0NDY1OH0.Qq8ylTZHg1DWmjdlsOeVdhzGZB9m8waQT-sTNckT_PI

}
}

打印返回信息
public static void main(String[] args) {

       HashMap<String, String> map = new HashMap<>();
       map.put("name","张三");
       map.put("code","100861154");
       String token = genertorToken(map);
       System.out.println("token = " + token);
// token = eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb2RlIjoiMTAwODYxMTU0IiwibmFtZSI6IuW8oOS4iSIsImV4cCI6MTcwMjA0NDY1OH0.Qq8ylTZHg1DWmjdlsOeVdhzGZB9m8waQT-sTNckT_PI
       
token解析

 

 

 

posted @ 2023-12-07 22:07  爱豆技术部  阅读(25)  评论(0编辑  收藏  举报
TOP