飞滴出行网约车2022-使用JWT,根据传入token获取初始有效数据内容

master
yh 3 years ago
parent 386ba7e42c
commit af9dda5f51

@ -3,19 +3,22 @@ package com.mashibing.internalcommon.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 JwtUtils {
// 盐:服务端本地私有
private static final String SIGN = "CPFmsb%!@SSAE";
private static final String TOKEN_KEY = "passengerPhone";
// 提供 公共获取 token字符串
public static String gerneratorToken(Map<String,String> map){
public static String gerneratorToken(String passengerPhone){
// 准备 token过期时间 Date 类型
Calendar calendar = Calendar.getInstance();
@ -25,15 +28,8 @@ public class JwtUtils {
// 使用 JWT 创建 token合成对象 builder
JWTCreator.Builder builder = JWT.create();
// 将 map 中有效数据部份 遍历合成到 builder中
if(map == null && map.size() <= 0){// 有效数据为空,直接返回空值
return null;
}
map.forEach(
(k,v)-> {
builder.withClaim(k,v);
}
);
// 将 有效数据部份 合成到 builder中
builder.withClaim(TOKEN_KEY,passengerPhone);
// 设置 超时时间
builder.withExpiresAt(date);
@ -43,13 +39,29 @@ public class JwtUtils {
return sign;
}
public static void main (String [ ] args ) {
Map<String, String> map = new HashMap<>();
map.put("name", "zhang san");
map.put("age", "18");
String s = gerneratorToken(map);
System.out.println("生成的token:" + s);
/**
* token
* @param token
* @return
*/
public static String parseToken(String token){
// 通过 JWT 的 required 以某种加密算法校验后 进行比对
DecodedJWT verify = JWT.require(Algorithm.HMAC256(SIGN)).build().verify(token);
// 获取有效数据内容
Claim claim = verify.getClaim(TOKEN_KEY);
return claim.toString();
}
// public static void main (String [ ] args ) {
//
// String tmpPhone = "13912345678";
// String token = gerneratorToken(tmpPhone);
// System.out.println("号码 "+tmpPhone+"生成的token = " + token);
// String s = parseToken(token);
// System.out.println("根据生成token解析出的有效数据是 " + s);
//
// }
}

Loading…
Cancel
Save