From 8d9a2d656e4ae007590c622e5f7c228adacdca49 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Fri, 14 Jun 2024 10:11:36 +0800
Subject: [PATCH] 统一风格
---
src/main/java/com/dji/sample/common/util/JwtUtil.java | 81 ++++++++++++++++++++++++++++++----------
1 files changed, 61 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/dji/sample/common/util/JwtUtil.java b/src/main/java/com/dji/sample/common/util/JwtUtil.java
index 9c2cb9a..c04168e 100644
--- a/src/main/java/com/dji/sample/common/util/JwtUtil.java
+++ b/src/main/java/com/dji/sample/common/util/JwtUtil.java
@@ -2,7 +2,6 @@
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
-import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.TokenExpiredException;
import com.auth0.jwt.interfaces.DecodedJWT;
@@ -10,10 +9,9 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
-import java.util.Date;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
@Slf4j
@Component
@@ -27,7 +25,7 @@
private static String secret;
- private static Algorithm algorithm;
+ public static Algorithm algorithm;
@Value("${jwt.issuer: DJI}")
private void setIssuer(String issuer) {
@@ -54,20 +52,64 @@
JwtUtil.algorithm = Algorithm.HMAC256(secret);
}
+ private JwtUtil() {
+
+ }
+
/**
* Create a token based on custom information.
* @param claims custom information
* @return token
*/
- public static String createToken(Map<String, String> claims) {
+ public static String createToken(Map<String, ?> claims) {
+ return JwtUtil.createToken(claims, age, algorithm, subject, issuer);
+ }
+
+ /**
+ *
+ * @param claims
+ * @param age unit: s
+ * @param algorithm
+ * @param subject
+ * @param issuer
+ * @return
+ */
+ public static String createToken(Map<String, ?> claims, Long age, Algorithm algorithm, String subject, String issuer) {
+ if (Objects.isNull(algorithm)) {
+ throw new IllegalArgumentException();
+ }
+
Date now = new Date();
JWTCreator.Builder builder = JWT.create();
// Add custom information to the token's payload segment.
- claims.forEach(builder::withClaim);
- String token = builder.withIssuer(issuer)
- .withSubject(subject)
+ claims.forEach((k, v) -> {
+ if (Objects.nonNull(v.getClass().getClassLoader())) {
+ log.error("claim can't be set to a custom object.");
+ return;
+ }
+ if (v instanceof Map) {
+ builder.withClaim(k, (Map) v);
+ } else if (v instanceof List) {
+ builder.withClaim(k, (List) v);
+ } else {
+ builder.withClaim(k, String.valueOf(v));
+ }
+ });
+
+ if (StringUtils.hasText(subject)) {
+ builder.withSubject(subject);
+ }
+
+ if (StringUtils.hasText(issuer)) {
+ builder.withIssuer(issuer);
+ }
+
+ if (Objects.nonNull(age)) {
+ builder.withExpiresAt(new Date(now.getTime() + age * 1000));
+ }
+
+ String token = builder
.withIssuedAt(now)
- .withExpiresAt(new Date(now.getTime() + age))
.withNotBefore(now)
.sign(algorithm);
log.debug("token created. " + token);
@@ -81,14 +123,7 @@
* @throws TokenExpiredException
*/
public static DecodedJWT verifyToken(String token) {
- try {
- JWTVerifier verifier = JWT.require(algorithm).build();
- return verifier.verify(token);
- } catch (Exception e) {
- log.error(e.getMessage());
- e.printStackTrace();
- return null;
- }
+ return JWT.require(algorithm).build().verify(token);
}
/**
@@ -97,7 +132,13 @@
* @return custom claim
*/
public static Optional<CustomClaim> parseToken(String token) {
- DecodedJWT jwt = verifyToken(token);
- return jwt == null ? Optional.empty() : Optional.of(new CustomClaim(jwt.getClaims()));
+ DecodedJWT jwt;
+ try {
+ jwt = verifyToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return Optional.empty();
+ }
+ return Optional.of(new CustomClaim(jwt.getClaims()));
}
}
--
Gitblit v1.9.3