From c1bb1041893caff8048e33c27aa9f2243002527d Mon Sep 17 00:00:00 2001 From: zhangmeng <1334717033@qq.com> Date: Sat, 18 Feb 2023 17:51:17 +0800 Subject: [PATCH] =?UTF-8?q?2023=E5=B9=B42=E6=9C=8818=E6=97=A517:50:59=20jw?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/controller/JwtController.java | 63 ++++++++++++++++++ .../controller/SmallToolsController.java | 26 ++++++++ .../com/zhangmeng/tools/utils/ImagePath.java | 5 ++ .../zhangmeng/tools/utils/ResourcesUtils.java | 2 +- src/main/resources/fxml/jwt.fxml | 27 ++++++++ src/main/resources/static/svg/jwt-web.png | Bin 0 -> 18305 bytes 6 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/zhangmeng/tools/controller/JwtController.java create mode 100644 src/main/resources/fxml/jwt.fxml create mode 100644 src/main/resources/static/svg/jwt-web.png diff --git a/src/main/java/com/zhangmeng/tools/controller/JwtController.java b/src/main/java/com/zhangmeng/tools/controller/JwtController.java new file mode 100644 index 0000000..0bf8342 --- /dev/null +++ b/src/main/java/com/zhangmeng/tools/controller/JwtController.java @@ -0,0 +1,63 @@ +package com.zhangmeng.tools.controller; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.scene.control.ComboBox; +import javafx.scene.control.TextField; + +import java.util.Date; +import java.util.Map; + +/** + * @author : 芊芊墨客 + * @version : 1.0 + * @date : 2023-02-18 16:21 + */ +public class JwtController { + + @FXML + private TextField secret_key; + + @FXML + private TextField expiration_time; + + @FXML + private ComboBox comboBox; + + @FXML + public void initialize() { + ObservableList list = FXCollections.observableArrayList(SignatureAlgorithm.values()); + comboBox.setItems(list); + comboBox.getSelectionModel().select(SignatureAlgorithm.ES256); + + } + + private String generateToken(Map claims,String secret,long expiration,SignatureAlgorithm signatureAlgorithm) { + Date expirationDate = new Date(System.currentTimeMillis() + expiration); + return Jwts.builder().setClaims(claims).setExpiration(expirationDate).signWith(signatureAlgorithm, secret).compact(); + } + + private Claims getClaimsFromToken(String token,String secret) { + Claims claims; + try { + claims = Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody(); + } catch (Exception e) { + claims = null; + } + return claims; + } + + public Boolean isTokenExpired(String token,String secret ) { + try { + Claims claims = getClaimsFromToken(token,secret); + Date expiration = claims.getExpiration(); + return expiration.before(new Date()); + } catch (Exception e) { + return false; + } + } +} diff --git a/src/main/java/com/zhangmeng/tools/controller/SmallToolsController.java b/src/main/java/com/zhangmeng/tools/controller/SmallToolsController.java index 95bf521..fecc74e 100644 --- a/src/main/java/com/zhangmeng/tools/controller/SmallToolsController.java +++ b/src/main/java/com/zhangmeng/tools/controller/SmallToolsController.java @@ -42,6 +42,7 @@ public class SmallToolsController { private AnchorPane hex_16; private AnchorPane unicode; + private AnchorPane jwt_web; @FXML private ListView listView; @@ -128,6 +129,13 @@ public class SmallToolsController { } unicode(flag); } + + if (newValue.getIndex() == 2) { + if (jwt_web != null) { + flag = true; + } + jwt_web(flag); + } } }); } @@ -136,6 +144,7 @@ public class SmallToolsController { return switch (SmallTools) { case Hex_16 -> new Image(ImagePath.path(ImagePath.ImagePathType.Hex_16)); case Unicode -> new Image(ImagePath.path(ImagePath.ImagePathType.Unicode)); + case JWT_WEB -> new Image(ImagePath.path(ImagePath.ImagePathType.JWT_WEB)); }; } @@ -233,6 +242,23 @@ public class SmallToolsController { common_method(); } + public void jwt_web(boolean flag){ + //默认选择第一个 + listView.getSelectionModel().select(2); + + if (!flag) { + try { + root = FXMLLoader.load(ResourcesUtils.getResource("jwt")); + } catch (IOException e) { + e.printStackTrace(); + } + jwt_web = root; + } else { + root = jwt_web; + } + common_method(); + } + private void common_method() { splitPane.getItems().remove(1); splitPane.getItems().add(1, root); diff --git a/src/main/java/com/zhangmeng/tools/utils/ImagePath.java b/src/main/java/com/zhangmeng/tools/utils/ImagePath.java index 05c3305..64870dc 100644 --- a/src/main/java/com/zhangmeng/tools/utils/ImagePath.java +++ b/src/main/java/com/zhangmeng/tools/utils/ImagePath.java @@ -54,6 +54,7 @@ public class ImagePath { VIP_PLAYER("VIP解析播放"), MD5("md5 加密"), SPRING_SECURITY("SPRING_SECURITY 加密"), + JWT_WEB("json-web-token"), Hex_16("16 进制"), Unicode("Unicode"), @@ -238,6 +239,7 @@ public class ImagePath { public static String SPRING_SECURITY = "svg/spring-security.png"; public static String Hex_16 = "svg/hex_16.png"; public static String Unicode = "svg/unicode.png"; + public static String JWT_WEB = "svg/jwt-web.png"; public static String path(ImagePathType type) { @@ -386,6 +388,9 @@ public class ImagePath { case Unicode: path = ImagePath.Unicode; break; + case JWT_WEB: + path = ImagePath.JWT_WEB; + break; } return "static/" + path; } diff --git a/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java b/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java index 2326078..db535a5 100644 --- a/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java +++ b/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java @@ -82,7 +82,7 @@ public class ResourcesUtils { Hex_16("16进制(Hex)",0), Unicode("Unicode和字符串转换",1), - + JWT_WEB("json-web-token",2), ; SmallTools(String title, int index) { diff --git a/src/main/resources/fxml/jwt.fxml b/src/main/resources/fxml/jwt.fxml new file mode 100644 index 0000000..d141e38 --- /dev/null +++ b/src/main/resources/fxml/jwt.fxml @@ -0,0 +1,27 @@ + + + + + + + + + + + +