JWT工具類
本文使用的是
<!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.10.3</version>
</dependency>
package com.ano.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.Map;
public class JWTUtil {
/**
* signature生成所需要的密鑰
*/
private static final String KEY = "這里自己寫!!!!";
/**
* 生成token header.payload.signature
* @param map
* @return
*/
public static String getToken(Map<String,String> map){
Calendar instance = Calendar.getInstance();
instance.add(Calendar.DATE,7); //默認七天過期
JWTCreator.Builder builder = JWT.create();
//遍歷map生成payload
map.forEach((k,v)->{
builder.withClaim(k,v);
});
String token = builder.withExpiresAt(instance.getTime()) //指定過期時間
.sign(Algorithm.HMAC256(KEY)); //生成sign
return token;
}
/**
* 驗證token合法性
* 并且回傳解碼后的資訊
* 可以通過getClainm方式獲取資訊
* @param token
*/
public static DecodedJWT verify(String token){
/**
* 如果驗證失敗,會拋出例外
* 常見四個例外型別如下
* SignatureVerificationException 簽名不一致
* TokenExpiredException 令牌過期
* AlgorithmMismatchException 演算法不一致
* InvalidClaimException 失效的payload
*/
DecodedJWT verify = JWT.require(Algorithm.HMAC256(KEY)).build().verify(token);
return verify;
}
}
方便之后復制粘貼
順便問一下,如果想要gettoken的時候,想要key value中value不是String怎么辦?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/227515.html
標籤:java
