![JAR search and dependency download from the Maven repository](/logo.png)
com.swak.core.security.JwtTokenUtils Maven / Gradle / Ivy
package com.swak.core.security;
import com.alibaba.fastjson2.JSON;
import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.collect.Sets;
import com.swak.common.util.JacksonUtils;
import com.swak.common.util.StringPool;
import com.swak.common.util.UUIDHexGenerator;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.impl.TextCodec;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.Map;
import java.util.Objects;
/**
* JwtTokenUtils.java
*
* @author colley.ma
* @since 2.4.0
*/
public class JwtTokenUtils {
public static String encode(TokenJwtDetails jwtDetails, String jwtSecret) {
if (Objects.nonNull(jwtDetails)) {
Map claims = JacksonUtils.convertValue(jwtDetails);
JwtBuilder jwtBuilder = Jwts.builder().signWith(SignatureAlgorithm.HS256, TextCodec.BASE64.encode(jwtSecret))
.setClaims(claims);
return jwtBuilder.compact();
}
return StringPool.EMPTY;
}
public static TokenJwtDetails decode(String jwt, String jwtSecret) {
if (StringUtils.isEmpty(jwt)) {
return null;
}
Claims claims = decodeClaimJws(jwt, jwtSecret);
return JacksonUtils.convertValue(claims, new TypeReference() {
});
}
public static String encode(Map claims, String jwtSecret) {
if (MapUtils.isNotEmpty(claims)) {
JwtBuilder jwtBuilder = Jwts.builder().signWith(SignatureAlgorithm.HS256, TextCodec.BASE64.encode(jwtSecret))
.setClaims(claims);
return jwtBuilder.compact();
}
return StringPool.EMPTY;
}
public static Claims decodeClaimJws(String jwt, String jwtSecret) {
if (StringUtils.isEmpty(jwt)) {
return null;
}
return Jwts.parser().setSigningKey(TextCodec.BASE64.encode(jwtSecret)).parseClaimsJws(jwt).getBody();
}
public static void main(String[] args) {
TokenJwtDetails jwtDetails = new DefaultTokenJwtDetails();
jwtDetails.setExpireTime(System.currentTimeMillis());
jwtDetails.setEmail("[email protected]");
jwtDetails.setUserId(1L);
jwtDetails.setUsername("admin");
jwtDetails.setToken(UUIDHexGenerator.generator());
jwtDetails.setLoginTime(System.currentTimeMillis());
jwtDetails.setPermissions(Sets.newHashSet("role"));
System.out.println(JwtTokenUtils.encode(jwtDetails,StringPool.KEY));
String jwt = "eyJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjEsInBlcm1pc3Npb25zIjpbInJvbGUiXSwiZXhwaXJlVGltZSI6MTcyMTM1OTczNjYyNSwibG9naW5UaW1lIjoxNzIxMzU5NzM2NjUzLCJ0b2tlbiI6ImZmODA4MDgxOTBjOTA5MWYwMTkwYzkwOTFmNGQwMDAxIiwidXNlcm5hbWUiOiJhZG1pbiIsImVtYWlsIjoiNDE4MjM0NzUxQHFxLmNvbSJ9.BngIPhfLMaYtBnV5qwzJ7rWo82egzvWBTEiJfZMuUcI";
System.out.println(JSON.toJSONString(JwtTokenUtils.decode(jwt,StringPool.KEY)));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy