package com.iailab.module.data.common.utils;
|
|
import com.auth0.jwt.JWT;
|
import com.auth0.jwt.JWTVerifier;
|
import com.auth0.jwt.algorithms.Algorithm;
|
import com.auth0.jwt.interfaces.DecodedJWT;
|
|
import java.util.Date;
|
|
/**
|
* @author PanZhibao
|
* @Description
|
* @createTime 2022年07月20日 11:47:00
|
*/
|
public class JwtUtils {
|
private static final String USER_INFO_KEY = "username";
|
|
/**Token有效期为12小时*/
|
public static final long EXPIRE_TIME = 60 * 60 * 1000 * 12;
|
|
/**
|
* 生成Token
|
* @param username 用户标识(唯一)
|
* @param secretKey 签名算法以及密匙
|
* @return
|
*/
|
public static String generateToken(String username, String secretKey) {
|
Algorithm algorithm = Algorithm.HMAC256(secretKey);
|
|
Date now = new Date();
|
|
Date expireTime = new Date(now.getTime() + EXPIRE_TIME);
|
|
String token = JWT.create()
|
.withClaim(USER_INFO_KEY, username)
|
.withExpiresAt(expireTime)
|
.sign(algorithm);
|
|
return token;
|
}
|
|
/**
|
* 校验token是否正确
|
*
|
* @param token 密钥
|
* @param secret 用户的密码
|
* @return 是否正确
|
*/
|
public static boolean verify(String token, String username, String secret) {
|
try {
|
// 根据密码生成JWT效验器
|
Algorithm algorithm = Algorithm.HMAC256(secret);
|
JWTVerifier verifier = JWT.require(algorithm).withClaim("username", username).build();
|
// 效验TOKEN
|
DecodedJWT jwt = verifier.verify(token);
|
return true;
|
} catch (Exception exception) {
|
return false;
|
}
|
}
|
|
/**
|
* 校验token是否正确
|
*
|
* @param token
|
* @param secret
|
* @return
|
*/
|
public static boolean verify(String token, String secret) {
|
try {
|
Algorithm algorithm = Algorithm.HMAC256(secret);
|
JWTVerifier verifier = JWT.require(algorithm).build();
|
// 效验TOKEN
|
DecodedJWT jwt = verifier.verify(token);
|
return true;
|
} catch (Exception exception) {
|
exception.printStackTrace();
|
return false;
|
}
|
}
|
|
/**
|
* 从Token中提取用户信息
|
* @param token
|
* @return
|
*/
|
public static String getUserInfo(String token) {
|
DecodedJWT decodedJWT = JWT.decode(token);
|
String username = decodedJWT.getClaim(USER_INFO_KEY).asString();
|
return username;
|
}
|
|
/**
|
* 从Token中提取信息
|
* @param token
|
* @param key
|
* @return
|
*/
|
public static String getInfo(String token, String key) {
|
DecodedJWT decodedJWT = JWT.decode(token);
|
String username = decodedJWT.getClaim(USER_INFO_KEY).asString();
|
return username;
|
}
|
}
|