diff --git a/dsGw/pom.xml b/dsGw/pom.xml index 222bd094..fee414f0 100644 --- a/dsGw/pom.xml +++ b/dsGw/pom.xml @@ -71,5 +71,33 @@ snakeyaml ${snakeyaml.version} + + + + + io.jsonwebtoken + jjwt + 0.7.0 + + + javax.xml.bind + jaxb-api + 2.3.0 + + + com.sun.xml.bind + jaxb-impl + 2.3.0 + + + com.sun.xml.bind + jaxb-core + 2.3.0 + + + javax.activation + activation + 1.1.1 + diff --git a/dsGw/src/main/java/com/dsideal/gw/GwApplication.java b/dsGw/src/main/java/com/dsideal/gw/GwApplication.java index 1ec62616..221f7be0 100644 --- a/dsGw/src/main/java/com/dsideal/gw/GwApplication.java +++ b/dsGw/src/main/java/com/dsideal/gw/GwApplication.java @@ -38,6 +38,15 @@ public class GwApplication extends JFinalConfig { public static Map routeList = new HashMap<>(); //白名单 public static Set whiteSet = new HashSet<>(); + + public static Prop PropKit; + + static { + //加载配置文件 + String configFile = "application_{?}.yaml".replace("{?}", getEnvPrefix()); + PropKit = new YamlProp(configFile); + } + /** * 配置常量 */ @@ -45,16 +54,14 @@ public class GwApplication extends JFinalConfig { public void configConstant(Constants me) { //使用LogBack me.setLogFactory(new LogBackLogFactory()); - //加载配置文件 - String configFile = "application_{?}.yaml".replace("{?}", getEnvPrefix()); - Prop PropKit = new YamlProp(configFile); + // 设置静态根目录为上传根目录 me.setBaseUploadPath(PropKit.get("uploadTempPath")); // 获取所有配置项,得到路由表 for (Map.Entry entry : PropKit.getProperties().entrySet()) { if (entry.getKey().toString().startsWith("route")) { - routeList.put(entry.getKey().toString().substring(6).replace(".url",""), entry.getValue().toString()); + routeList.put(entry.getKey().toString().substring(6).replace(".url", ""), entry.getValue().toString()); } } // 获取白名单链接列表 diff --git a/dsGw/src/main/java/com/dsideal/gw/Util/JwtUtil.java b/dsGw/src/main/java/com/dsideal/gw/Util/JwtUtil.java new file mode 100644 index 00000000..dfdd9a08 --- /dev/null +++ b/dsGw/src/main/java/com/dsideal/gw/Util/JwtUtil.java @@ -0,0 +1,67 @@ +package com.dsideal.gw.Util; + +import com.dsideal.gw.GwApplication; +import com.dsideal.gw.Plugin.YamlProp; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; + +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; +import java.util.Date; + +public class JwtUtil { + public static final String AUTHORIZATION_STARTER = "Bearer "; + public static final String SECRET = GwApplication.PropKit.get("SECRET"); + + /** + * 功能:黄海开发的生成JWT函数 + * + * @param identity_id 身份ID + * @param person_id 人员ID + * @return JWT签名 + */ + public static String generateToken(int identity_id, String person_id) { + // 获取当前日期和时间 + Date now = new Date(); + // 格式化日期 + Map claims = new HashMap<>(); + claims.put("create_time", now.toString()); + claims.put("identity_id", identity_id); + claims.put("person_id", person_id); + return AUTHORIZATION_STARTER + Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS256, SECRET).compact(); + } + + public static Claims getClaims(String token) { + if (token.contains(AUTHORIZATION_STARTER)) { + token = token.replace(AUTHORIZATION_STARTER, ""); + } + Claims claims; + try { + claims = Jwts.parser() + .setSigningKey(SECRET) + .parseClaimsJws(token) + .getBody(); + } catch (Exception e) { + try { + claims = Jwts.parser() + .setSigningKey(SECRET.getBytes(StandardCharsets.UTF_8)) + .parseClaimsJws(token) + .getBody(); + } catch (Exception err) { + claims = null; + } + } + return claims; + } + + public static void main(String[] args) { + GwApplication gw = new GwApplication(); + String token = generateToken(4, "0b64e31e-a85e-43eb-ba5f-3088d986a8da"); + + Claims claims = getClaims(token); + System.out.println(claims.get("identity_id")); + System.out.println(claims.get("person_id")); + } +} diff --git a/dsGw/src/main/resources/application_dev.yaml b/dsGw/src/main/resources/application_dev.yaml index dad278dc..6c191946 100644 --- a/dsGw/src/main/resources/application_dev.yaml +++ b/dsGw/src/main/resources/application_dev.yaml @@ -1,6 +1,9 @@ # 上传文件的临时路径 uploadTempPath: c:/Windows/Temp +# JWT +SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM + # 路由 route: # 基础数据 diff --git a/dsGw/src/main/resources/application_pro.yaml b/dsGw/src/main/resources/application_pro.yaml index 310e2cf5..57965415 100644 --- a/dsGw/src/main/resources/application_pro.yaml +++ b/dsGw/src/main/resources/application_pro.yaml @@ -1,5 +1,8 @@ # 上传文件的临时路径 uploadTempPath: /tmp +# JWT +SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM + # 路由 route: # 基础数据 diff --git a/dsGw/target/classes/application_dev.yaml b/dsGw/target/classes/application_dev.yaml index dad278dc..6c191946 100644 --- a/dsGw/target/classes/application_dev.yaml +++ b/dsGw/target/classes/application_dev.yaml @@ -1,6 +1,9 @@ # 上传文件的临时路径 uploadTempPath: c:/Windows/Temp +# JWT +SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM + # 路由 route: # 基础数据 diff --git a/dsGw/target/classes/application_pro.yaml b/dsGw/target/classes/application_pro.yaml index 310e2cf5..57965415 100644 --- a/dsGw/target/classes/application_pro.yaml +++ b/dsGw/target/classes/application_pro.yaml @@ -1,5 +1,8 @@ # 上传文件的临时路径 uploadTempPath: /tmp +# JWT +SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM + # 路由 route: # 基础数据