Browse Source

fix(授权管理): 修复授权解析异常问题
1. 修复授权密码错误导致的无法解析授权文件
2. 授时时间戳计算方式计算

kindring 1 year ago
parent
commit
a94c7e3a00

+ 3 - 0
src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java

@@ -96,6 +96,9 @@ public class VManageBootstrap extends SpringBootServletInitializer {
 			logger.info("---------------------------------------------");
 			return;
 		}
+		logger.info("---------------------------------------------");
+		logger.info("剩余授权时间: {} 天", authorRun.computeAuthorizeDay());
+		logger.info("---------------------------------------------");
 		VManageBootstrap.args = args;
 		VManageBootstrap.context = SpringApplication.run(VManageBootstrap.class, args);
 		// 判断是否已经申请授权文件

+ 12 - 3
src/main/java/com/genersoft/iot/vmp/conf/AuthorRun.java

@@ -23,6 +23,8 @@ public class AuthorRun {
     // 是否已经被批准授权
     private boolean isAuthorize = true;
 
+    private final static Logger logger = LoggerFactory.getLogger(AuthorRun.class);
+
     private String authorizeFilePath = Authorize.baseAuthorizeFilePath;
     private String authorizeApproveFilePath = AuthorizeApprove.baseAuthorizeApproveFilePath;
     public AuthorRun(String _authorizeFilePath, String _authorizeApproveFilePath) {
@@ -79,8 +81,13 @@ public class AuthorRun {
         }
 
         // 检测授权请求时间是否小于授权批准时间
-        long queryTime = DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(this.authorData.getAuthorizeTime());
-        long approveTime = DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(this.authorizeApprove.getApproveTime());
+        String queryTimeStr = this.authorData.getAuthorizeTime();
+        String approveTimeStr = this.authorizeApprove.getApproveTime();
+        // ISO8601 转 yyyy-MM-dd HH:mm:ss
+        queryTimeStr = DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(queryTimeStr);
+        approveTimeStr = DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(approveTimeStr);
+        long queryTime = DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(queryTimeStr);
+        long approveTime = DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(approveTimeStr);
         if(queryTime > approveTime) {
             logger.error("授权批准时间不合法");
             return false;
@@ -102,6 +109,9 @@ public class AuthorRun {
         int authorizeDay = this.authorizeApprove.getAuthorizeDay();
         // 获取当前时间
         String nowTime = DateUtil.getNowForISO8601();
+        // ISO8601 转 yyyy-MM-dd HH:mm:ss
+        approveTime = DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(approveTime);
+        nowTime = DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(nowTime);
         // 获取授权批准时间戳
         long approveTimestamp = DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(approveTime);
         // 获取当前时间戳
@@ -152,7 +162,6 @@ public class AuthorRun {
 
     private final static String baseAuthorizeApproveFilePath = "authorize/authorizeApprove.hfy";
 
-    private final static Logger logger = LoggerFactory.getLogger(Authorize.class);
 
 
 }

+ 3 - 3
src/main/java/com/genersoft/iot/vmp/conf/AuthorizeApprove.java

@@ -29,13 +29,13 @@ public class AuthorizeApprove {
     private int authorizeDay;
 
     public final static String baseAuthorizeApproveFilePath = "authorize/authorizeApprove.hfy";
-    private final static Logger logger = LoggerFactory.getLogger(Authorize.class);
+    private final static Logger logger = LoggerFactory.getLogger(AuthorizeApprove.class);
     // 读取授权文件
     private static byte[] readAuthorizeApproveFile(String path) {
         if(path == null) {
             path = baseAuthorizeApproveFilePath;
         }
-        logger.info("path: {}", path);
+//        logger.info("path: {}", path);
         File file = new File(path);
         if(!file.exists()) {
             logger.error("无法解析授权请求文件");
@@ -144,7 +144,7 @@ public class AuthorizeApprove {
         String code = new String(approveData);
 
         // 解密授权文件
-        String password = authorData.getPassword() + machineCode;
+        String password = getApprovePasswd(authorData, machineCode);
         try
         {
             String decryptStr = AesUtils.decrypt(code, password);