您的位置:首页 > 健康 > 美食 > 如何把一个JAVA项目设置有效期,授权日期的方法

如何把一个JAVA项目设置有效期,授权日期的方法

2024/10/5 15:00:32 来源:https://blog.csdn.net/weimeilayer/article/details/139962905  浏览:    关键词:如何把一个JAVA项目设置有效期,授权日期的方法

创建一个 config.properties

expirationDate=QJICbwa/nzypraK6MYp62LUC/fambI7G

这个是QJICbwa/nzypraK6MYp62LUC/fambI7G加密后的日期(这里指2024-12-31)
然后在创建一个 LicenseManager

import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Properties;
import cn.hutool.core.lang.Console;/*** @author weimeilayer@gmail.com ✨* @date 💓💕 2024年6月25日🐬🐇 💓💕*/
public class LicenseManager {private static final String CONFIG_FILE = "config.properties";private static LocalDate expirationDate;static {try {Properties properties = new Properties();InputStream input = LicenseManager.class.getClassLoader().getResourceAsStream(CONFIG_FILE);properties.load(input);String encryptedDate = properties.getProperty("expirationDate");// 解密逻辑(这里假设日期未加密,实际应用中应加密)expirationDate = LocalDate.parse(SMUtils.decyptPwd(encryptedDate));} catch (IOException e) {throw new RuntimeException("读取配置文件失败。", e);}}public static boolean checkLicense() {LocalDate currentDate = LocalDate.now();boolean isExpired = currentDate.isAfter(expirationDate);long daysLeft = ChronoUnit.DAYS.between(currentDate, expirationDate);Console.log(isExpired ? "授权已过期,无法使用该项目。" : "授权有效,距离到期还有 " + daysLeft + " 天,继续执行程序...");return !isExpired;}
}这里的加密方法使用自己的项目一种加密方法,暂时不提供(SMUtils方法),可以使用hutool的hutool-crypto 设置加密盐,项目只限用于项目运行,未交付源码,把jar运行在服务器上的那种,加上代码混淆,唯一设备识别码等多种方式限制,到期就无法使用,也可以把config.properties 放在项目jar一起 启动命令使用外部的启动方式

项目启动类中DynamicYearningApplication

import java.io.IOException;
import java.net.InetAddress;
import java.util.Objects;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import com.cqcloud.platform.handler.LicenseManager;
import cn.hutool.core.lang.Console;/*** @author weimeilayer@gmail.com ✨* @date 💓💕 2023年05月20日 🐬🐇启动类💓💕* @Copyright: All rights reserved.*/
@SpringBootApplication
public class DynamicYearningApplication {private static ConfigurableApplicationContext context;private static boolean isLicenseValid;public static void main(String[] args) throws IOException {context = new SpringApplication(DynamicYearningApplication.class).run(args);isLicenseValid = LicenseManager.checkLicense();ConfigurableEnvironment env = context.getEnvironment();String envPort = env.getProperty("server.port");String port = Objects.isNull(envPort) ? "8000" : envPort;String envContext = env.getProperty("server.servlet.context-path");String contextPath = Objects.isNull(envContext) ? "" : envContext;String path = port + contextPath + "/doc.html";String externalAPI = InetAddress.getLocalHost().getHostAddress();Console.log("Access URLs:\n\t-------------------------------------------------------------------------\n\tLocal-swagger: External-swagger: \thttp://{}:{}\n\t-------------------------------------------------------------------------",externalAPI, path);if (!isLicenseValid) SpringApplication.exit(context, () -> 0);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com