diff --git a/servers/boe-server-all/pom.xml b/servers/boe-server-all/pom.xml
index de0b436d..ba338021 100644
--- a/servers/boe-server-all/pom.xml
+++ b/servers/boe-server-all/pom.xml
@@ -205,7 +205,11 @@
system
${project.basedir}/src/main/resources/aspose/aspose-cells-java-18.11.jar
-
+
+ com.alibaba
+ fastjson
+ 2.0.17.graal
+
com.github.ulisesbocchio
@@ -232,7 +236,7 @@
spring-retry
1.3.1
-
+
diff --git a/servers/boe-server-all/src/main/java/com/xboe/config/ConditionException.java b/servers/boe-server-all/src/main/java/com/xboe/config/ConditionException.java
new file mode 100644
index 00000000..872a71af
--- /dev/null
+++ b/servers/boe-server-all/src/main/java/com/xboe/config/ConditionException.java
@@ -0,0 +1,25 @@
+package com.xboe.config;
+
+public class ConditionException extends RuntimeException{
+ private Integer code;
+ private String message;
+
+
+ public ConditionException(Integer code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ public ConditionException(String message) {
+ this(600, message);
+ }
+
+ public Integer getCode() {
+ return this.code;
+ }
+
+ @Override
+ public String getMessage() {
+ return message;
+ }
+}
diff --git a/servers/boe-server-all/src/main/java/com/xboe/config/JwtUtils.java b/servers/boe-server-all/src/main/java/com/xboe/config/JwtUtils.java
new file mode 100644
index 00000000..bfccfc29
--- /dev/null
+++ b/servers/boe-server-all/src/main/java/com/xboe/config/JwtUtils.java
@@ -0,0 +1,63 @@
+package com.xboe.config;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.xboe.common.utils.Sha256Mac;
+import org.apache.commons.codec.binary.Base64;
+
+import java.util.Map;
+
+/**
+ * Jwt工具类
+ *
+ * @author ruoyi
+ */
+public class JwtUtils {
+
+ public static final String secretKey = "JDF_BOE";
+
+ /**
+ * 从数据声明生成令牌
+ *
+ * @param claims 数据声明
+ * @return 令牌
+ */
+ public static String createToken(Map claims) {
+ JSONObject header = new JSONObject();
+ header.put("alg", "HS256");
+ header.put("type", "token");
+ String payload64 = Base64.encodeBase64String(JSON.toJSONString(claims).getBytes());
+ String header64 = Base64.encodeBase64String(header.toString().getBytes());
+ String sign = Sha256Mac.sha256_mac(header64 + payload64, secretKey);
+ return header64 + "." + payload64 + "." + sign;
+ }
+
+ /**
+ * 从令牌中获取数据声明
+ *
+ * @param token 令牌
+ * @return 数据声明
+ */
+ public static Map parseToken(String token) throws ConditionException {
+ String[] tokens = token.split("\\.");
+ if (tokens.length != 3) {
+ throw new ConditionException("token不合法 : " + token);
+ }
+ String payload = new String(Base64.decodeBase64(tokens[1]));
+ String sign = Sha256Mac.sha256_mac(tokens[0] + tokens[1], secretKey);
+ if (sign.equals(tokens[2])) {
+ JSONObject jsonObject = JSON.parseObject(payload);
+ long exp = jsonObject.getLong("exp");
+ long now = System.currentTimeMillis() / 1000;
+ if (now > exp) {
+ throw new ConditionException("token过期 : " + token);
+ }
+ Map map = JSON.parseObject(payload, new TypeReference