From 1af0bdb6b850caf19c5302baf185edce7efb457d Mon Sep 17 00:00:00 2001 From: liuguijing <123456> Date: Mon, 26 Feb 2024 14:50:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B2=B3=E5=8D=97=E8=BD=AC?= =?UTF-8?q?=E5=8F=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 10 +- .../src/main/resources/application-dev.yml | 183 ------------------ .../src/main/resources/application-prod.yml | 183 ------------------ .../src/main/resources/application-test.yml | 84 +------- xymanager_common/pom.xml | 8 +- .../xymanager_common/entity/ThirdUser.java | 68 ++----- .../util/http/OkHttpUtils.java | 140 +++++++------- .../util/xinyin/AESEncoder.java | 162 ++++++++++++++++ .../interaction/JwtInterceptor.java | 62 +++--- .../impl/HeNanHttpServiceImpl.java | 17 +- .../service/HeNanHttpService.java | 2 +- 11 files changed, 308 insertions(+), 611 deletions(-) delete mode 100644 xymanager_admin/src/main/resources/application-dev.yml delete mode 100644 xymanager_admin/src/main/resources/application-prod.yml create mode 100644 xymanager_common/src/main/java/com/shxy/xymanager_common/util/xinyin/AESEncoder.java diff --git a/pom.xml b/pom.xml index 38db8bc..5d3a5c9 100644 --- a/pom.xml +++ b/pom.xml @@ -151,11 +151,11 @@ - - - - - + + io.github.admin4j + http + 0.4.0 + diff --git a/xymanager_admin/src/main/resources/application-dev.yml b/xymanager_admin/src/main/resources/application-dev.yml deleted file mode 100644 index eb0f1fe..0000000 --- a/xymanager_admin/src/main/resources/application-dev.yml +++ /dev/null @@ -1,183 +0,0 @@ -## Spring配置 -#spring: -# # 数据源配置 -# datasource: -# type: com.alibaba.druid.pool.DruidDataSource -# driverClassName: com.mysql.cj.jdbc.Driver -# druid: -# # 主库数据源 -# master: -# url: jdbc:mysql://139.196.98.172:3306/fc_medicialkit?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: root -# password: Root*123 -# # 从库数据源 -# slave: -# # 从数据源开关/默认关闭 -# enabled: false -# url: -# username: -# password: -# # 初始连接数 -# initialSize: 5 -# # 最小连接池数量 -# minIdle: 10 -# # 最大连接池数量 -# maxActive: 20 -# # 配置获取连接等待超时的时间 -# maxWait: 60000 -# # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -# timeBetweenEvictionRunsMillis: 60000 -# # 配置一个连接在池中最小生存的时间,单位是毫秒 -# minEvictableIdleTimeMillis: 300000 -# # 配置一个连接在池中最大生存的时间,单位是毫秒 -# maxEvictableIdleTimeMillis: 900000 -# # 配置检测连接是否有效 -# validationQuery: SELECT 1 FROM DUAL -# testWhileIdle: true -# testOnBorrow: false -# testOnReturn: false -# webStatFilter: -# enabled: true -# statViewServlet: -# enabled: true -# # 设置白名单,不填则允许所有访问 -# allow: -# url-pattern: /druid/* -# # 控制台管理用户名和密码 -# login-username: root -# login-password: 123456 -# filter: -# stat: -# enabled: true -# # 慢SQL记录 -# log-slow-sql: true -# slow-sql-millis: 1000 -# merge-sql: true -# wall: -# config: -# multi-statement-allow: true -## # 资源信息 -## messages: -## # 国际化资源文件路径 -## basename: i18n/messages -## # 文件上传 -## servlet: -## multipart: -## # 单个文件大小 -## max-file-size: 20MB -## # 设置总上传的文件大小 -## max-request-size: 20MB -## # 服务模块 -## devtools: -## restart: -## # 热部署开关 -## enabled: true -# # redis 配置 -## redis: -## # 地址 -## host: localhost -## # 端口,默认为6379 -## port: 6379 -## # 数据库索引 -## database: 0 -## # 密码 -## password: -## # 连接超时时间 -## timeout: 10s -## lettuce: -## pool: -## # 连接池中的最小空闲连接 -## min-idle: 0 -## # 连接池中的最大空闲连接 -## max-idle: 8 -## # 连接池的最大数据库连接数 -## max-active: 8 -## # #连接池最大阻塞等待时间(使用负值表示没有限制) -## max-wait: -1ms -# -## 项目相关配置 -##shop-backend: -## # 名称 -## name: 知青人电商后端管理系统 -## # 版本 -## version: 1.0.0 -## # 版权年份 -## copyrightYear: 2021 -## # 实例演示开关 -## demoEnabled: true -## # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) -## profile: D:/shop-backend/uploadPath -## # 获取ip地址开关 -## addressEnabled: false -## # 验证码类型 math 数组计算 char 字符验证 -## captchaType: math -# -## 开发环境配置 -#server: -# # 服务器的HTTP端口,默认为8080 -# port: 8087 -# servlet: -# # 应用的访问路径 -# context-path: /zqrssb -# tomcat: -# # tomcat的URI编码 -# uri-encoding: UTF-8 -# # 连接数满后的排队数,默认为100 -# accept-count: 1000 -# max-swallow-size: -1 # tomcat默认大小2M,超过2M的文件不会被捕获,需要调整此处大小为100MB或者-1即可 -# threads: -# # tomcat最大线程数,默认为200 -# max: 800 -# # Tomcat启动初始化的线程数,默认值10 -# min-spare: 100 -# -### 日志配置 -##logging: -## config: classpath:log4j2ss.xml -## level: -## com.fc: debug -## org.springframework: warn -# -## token配置 -#token: -# # 令牌自定义标识 -# header: Authorization -# # 令牌密钥 -# secret: abcdefghijklmnopqrstuvwxyz -# # 令牌有效期(默认30分钟) -# expireTime: 30 -# -## MyBatis配置 -#mybatis: -# # 搜索指定包别名 -# type-aliases-package: com.fc.**.model -# # 配置mapper的扫描,找到所有的mapper.xml映射文件 -# mapper-locations: classpath*:mappers/**/*Dao.xml -# # 加载全局的配置文件 -# configLocation: classpath:mybatis/mybatis-config.xml -# -##mybatis: -## mapper-locations: classpath:mappers/**/*.xml -## type-aliases-package: com.fuchang.entity -# -### PageHelper分页插件 -##pagehelper: -## helperDialect: mysql -## supportMethodsArguments: true -## params: count=countSql -## -## Swagger配置 -#swagger2: -# # 是否开启swagger -# enabled: true -# # 请求前缀 -## pathMapping: /dev-api -## -### 防止XSS攻击 -##xss: -## # 过滤开关 -## enabled: true -## # 排除链接(多个用逗号分隔) -## excludes: /system/notice -## # 匹配链接 -## urlPatterns: /system/*,/monitor/*,/tool/* diff --git a/xymanager_admin/src/main/resources/application-prod.yml b/xymanager_admin/src/main/resources/application-prod.yml deleted file mode 100644 index eb0f1fe..0000000 --- a/xymanager_admin/src/main/resources/application-prod.yml +++ /dev/null @@ -1,183 +0,0 @@ -## Spring配置 -#spring: -# # 数据源配置 -# datasource: -# type: com.alibaba.druid.pool.DruidDataSource -# driverClassName: com.mysql.cj.jdbc.Driver -# druid: -# # 主库数据源 -# master: -# url: jdbc:mysql://139.196.98.172:3306/fc_medicialkit?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: root -# password: Root*123 -# # 从库数据源 -# slave: -# # 从数据源开关/默认关闭 -# enabled: false -# url: -# username: -# password: -# # 初始连接数 -# initialSize: 5 -# # 最小连接池数量 -# minIdle: 10 -# # 最大连接池数量 -# maxActive: 20 -# # 配置获取连接等待超时的时间 -# maxWait: 60000 -# # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -# timeBetweenEvictionRunsMillis: 60000 -# # 配置一个连接在池中最小生存的时间,单位是毫秒 -# minEvictableIdleTimeMillis: 300000 -# # 配置一个连接在池中最大生存的时间,单位是毫秒 -# maxEvictableIdleTimeMillis: 900000 -# # 配置检测连接是否有效 -# validationQuery: SELECT 1 FROM DUAL -# testWhileIdle: true -# testOnBorrow: false -# testOnReturn: false -# webStatFilter: -# enabled: true -# statViewServlet: -# enabled: true -# # 设置白名单,不填则允许所有访问 -# allow: -# url-pattern: /druid/* -# # 控制台管理用户名和密码 -# login-username: root -# login-password: 123456 -# filter: -# stat: -# enabled: true -# # 慢SQL记录 -# log-slow-sql: true -# slow-sql-millis: 1000 -# merge-sql: true -# wall: -# config: -# multi-statement-allow: true -## # 资源信息 -## messages: -## # 国际化资源文件路径 -## basename: i18n/messages -## # 文件上传 -## servlet: -## multipart: -## # 单个文件大小 -## max-file-size: 20MB -## # 设置总上传的文件大小 -## max-request-size: 20MB -## # 服务模块 -## devtools: -## restart: -## # 热部署开关 -## enabled: true -# # redis 配置 -## redis: -## # 地址 -## host: localhost -## # 端口,默认为6379 -## port: 6379 -## # 数据库索引 -## database: 0 -## # 密码 -## password: -## # 连接超时时间 -## timeout: 10s -## lettuce: -## pool: -## # 连接池中的最小空闲连接 -## min-idle: 0 -## # 连接池中的最大空闲连接 -## max-idle: 8 -## # 连接池的最大数据库连接数 -## max-active: 8 -## # #连接池最大阻塞等待时间(使用负值表示没有限制) -## max-wait: -1ms -# -## 项目相关配置 -##shop-backend: -## # 名称 -## name: 知青人电商后端管理系统 -## # 版本 -## version: 1.0.0 -## # 版权年份 -## copyrightYear: 2021 -## # 实例演示开关 -## demoEnabled: true -## # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) -## profile: D:/shop-backend/uploadPath -## # 获取ip地址开关 -## addressEnabled: false -## # 验证码类型 math 数组计算 char 字符验证 -## captchaType: math -# -## 开发环境配置 -#server: -# # 服务器的HTTP端口,默认为8080 -# port: 8087 -# servlet: -# # 应用的访问路径 -# context-path: /zqrssb -# tomcat: -# # tomcat的URI编码 -# uri-encoding: UTF-8 -# # 连接数满后的排队数,默认为100 -# accept-count: 1000 -# max-swallow-size: -1 # tomcat默认大小2M,超过2M的文件不会被捕获,需要调整此处大小为100MB或者-1即可 -# threads: -# # tomcat最大线程数,默认为200 -# max: 800 -# # Tomcat启动初始化的线程数,默认值10 -# min-spare: 100 -# -### 日志配置 -##logging: -## config: classpath:log4j2ss.xml -## level: -## com.fc: debug -## org.springframework: warn -# -## token配置 -#token: -# # 令牌自定义标识 -# header: Authorization -# # 令牌密钥 -# secret: abcdefghijklmnopqrstuvwxyz -# # 令牌有效期(默认30分钟) -# expireTime: 30 -# -## MyBatis配置 -#mybatis: -# # 搜索指定包别名 -# type-aliases-package: com.fc.**.model -# # 配置mapper的扫描,找到所有的mapper.xml映射文件 -# mapper-locations: classpath*:mappers/**/*Dao.xml -# # 加载全局的配置文件 -# configLocation: classpath:mybatis/mybatis-config.xml -# -##mybatis: -## mapper-locations: classpath:mappers/**/*.xml -## type-aliases-package: com.fuchang.entity -# -### PageHelper分页插件 -##pagehelper: -## helperDialect: mysql -## supportMethodsArguments: true -## params: count=countSql -## -## Swagger配置 -#swagger2: -# # 是否开启swagger -# enabled: true -# # 请求前缀 -## pathMapping: /dev-api -## -### 防止XSS攻击 -##xss: -## # 过滤开关 -## enabled: true -## # 排除链接(多个用逗号分隔) -## excludes: /system/notice -## # 匹配链接 -## urlPatterns: /system/*,/monitor/*,/tool/* diff --git a/xymanager_admin/src/main/resources/application-test.yml b/xymanager_admin/src/main/resources/application-test.yml index 52aa9d8..6d53d5c 100644 --- a/xymanager_admin/src/main/resources/application-test.yml +++ b/xymanager_admin/src/main/resources/application-test.yml @@ -2,7 +2,7 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/xymp?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + url: jdbc:mysql://192.168.1.190:3306/xymp?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: 123456 type: com.alibaba.druid.pool.DruidDataSource @@ -10,87 +10,6 @@ spring: multipart: # 指定自定义上传目录 location: /usr/local/home/manager/temp/ -#spring: -# # 数据源配置 -# datasource: -# type: com.alibaba.druid.pool.DruidDataSource -# driverClassName: com.mysql.cj.jdbc.Driver -# druid: -# # 主库数据源 -# master: -# url: jdbc:mysql://192.168.200.63:3306/xymp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: xymp -# password: xymp@123 -# # 从库数据源 -# slave: -# # 从数据源开关/默认关闭 -# enabled: false -# url: -# username: -# password: -# # 初始连接数 -# initialSize: 5 -# # 最小连接池数量 -# minIdle: 10 -# # 最大连接池数量 -# maxActive: 20 -# # 配置获取连接等待超时的时间 -# maxWait: 60000 -# # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -# timeBetweenEvictionRunsMillis: 60000 -# # 配置一个连接在池中最小生存的时间,单位是毫秒 -# minEvictableIdleTimeMillis: 300000 -# # 配置一个连接在池中最大生存的时间,单位是毫秒 -# maxEvictableIdleTimeMillis: 900000 -# # 配置检测连接是否有效 -# validationQuery: SELECT 1 FROM DUAL -# testWhileIdle: true -# testOnBorrow: false -# testOnReturn: false -# webStatFilter: -# enabled: true -# statViewServlet: -# enabled: true -# # 设置白名单,不填则允许所有访问 -# allow: -# url-pattern: /druid/* -# # 控制台管理用户名和密码 -# login-username: root -# login-password: 123456 -# filter: -# stat: -# enabled: true -# # 慢SQL记录 -# log-slow-sql: true -# slow-sql-millis: 1000 -# merge-sql: true -# wall: -# config: -# multi-statement-allow: true -# # # 资源信息 -# # messages: -# # # 国际化资源文件路径 -# # basename: i18n/messages -# # # 文件上传 -# # servlet: -# # multipart: -# # # 单个文件大小 -# # max-file-size: 20MB -# # # 设置总上传的文件大小 -# # max-request-size: 20MB -# # # 服务模块 -# # devtools: -# # restart: -# # # 热部署开关 -# # enabled: true -# mvc: -# view: -# suffix: .html -# # redis 配置 -# servlet: -# multipart: -# max-file-size: 10MB #单个数据大小 -# max-request-size: 50MB #总数据大小 # MyBatis配置 mybatis: # 搜索指定包别名 @@ -152,7 +71,6 @@ token: # 令牌有效期(默认30分钟) expireTime: 1 - # Swagger配置 swagger2: # 是否开启swagger diff --git a/xymanager_common/pom.xml b/xymanager_common/pom.xml index 4e3d63b..f3f627c 100644 --- a/xymanager_common/pom.xml +++ b/xymanager_common/pom.xml @@ -139,10 +139,10 @@ - - - - + + io.github.admin4j + http + diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/ThirdUser.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/ThirdUser.java index 31c1f18..558b857 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/ThirdUser.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/entity/ThirdUser.java @@ -1,48 +1,20 @@ -//package com.shxy.xymanager_common.entity; -// -//import java.io.Serializable; -//import java.util.Date; -// -//public class ThirdUser implements Serializable { -// private Integer name; -// -// private String password; -// -// private Date tokenEffectTime; -// -// private String token; -// -// private static final long serialVersionUID = 1L; -// -// public Integer getName() { -// return name; -// } -// -// public void setName(Integer name) { -// this.name = name; -// } -// -// public String getPassword() { -// return password; -// } -// -// public void setPassword(String password) { -// this.password = password == null ? null : password.trim(); -// } -// -// public Date getTokenEffectTime() { -// return tokenEffectTime; -// } -// -// public void setTokenEffectTime(Date tokenEffectTime) { -// this.tokenEffectTime = tokenEffectTime; -// } -// -// public String getToken() { -// return token; -// } -// -// public void setToken(String token) { -// this.token = token == null ? null : token.trim(); -// } -//} \ No newline at end of file +package com.shxy.xymanager_common.entity; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class ThirdUser implements Serializable { + private Integer name; + + private String password; + + private Date tokenEffectTime; + + private String token; + + private static final long serialVersionUID = 1L; + +} \ No newline at end of file diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/http/OkHttpUtils.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/http/OkHttpUtils.java index 7377ca8..70c2adf 100644 --- a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/http/OkHttpUtils.java +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/http/OkHttpUtils.java @@ -1,70 +1,70 @@ -//package com.shxy.xymanager_common.util.http; -//import com.alibaba.fastjson.JSONObject; -//import io.github.admin4j.http.HttpRequest; -//import io.github.admin4j.http.core.Pair; -//import io.github.admin4j.http.util.HttpUtil; -//import okhttp3.Response; -// -//import java.io.File; -//import java.io.IOException; -//import java.util.ArrayList; -//import java.util.HashMap; -//import java.util.List; -//import java.util.Map; -// -//public class OkHttpUtils { -// -// public static JSONObject get(String url, Map queryParams) throws IOException { -// Response response = HttpUtil.get(url, queryParams); -// return JSONObject.parseObject(response.body().string()); -// } -// -// public static JSONObject get(String url, Map queryParams, Map headers) throws IOException { -// HttpRequest httpRequest = HttpRequest.get(url); -// setParams(queryParams, httpRequest); -// Response response = httpRequest.queryParams().headers(headers).execute(); -// return JSONObject.parseObject(response.body().string()); -// } -// -// public static JSONObject post(String url, String json) throws IOException { -// Response response = HttpUtil.post(url, json); -// assert response.body() != null; -// return JSONObject.parseObject(response.body().string()); -// } -// -// public static JSONObject postForm(String url, Map formParams) throws IOException { -// Response response = HttpUtil.postForm(url, formParams); -// assert response.body() != null; -// return JSONObject.parseObject(response.body().string()); -// } -// -// public static JSONObject post(String url, String json, Map headers) throws IOException { -// HttpRequest httpRequest = HttpRequest.post(url); -// httpRequest.setBody(json); -// Response response = httpRequest.headers(headers).execute(); -// return JSONObject.parseObject(response.body().string()); -// } -// -// private static void setParams(Map queryParams, HttpRequest httpRequest) { -// List pairs = new ArrayList<>(queryParams.size()); -// queryParams.forEach((x, y) -> pairs.add(Pair.of(x, y))); -// if (pairs.size() > 0) { -// pairs.forEach(httpRequest::queryParams); -// } -// } -// -// private static JSONObject upload() throws IOException { -// File file = new File("C:\\Users\\andanyang\\Downloads\\Sql.txt"); -// Map formParams = new HashMap<>(); -// formParams.put("key", "test"); -// formParams.put("file", file); -// formParams.put("token", "WXyUseb-D4sCum-EvTIDYL-mEehwDtrSBg-Zca7t:qgOcR2gUoKmxt-VnsNb657Oatzo=:eyJzY29wZSI6InpoYW56aGkiLCJkZWFkbGluZSI6MTY2NTMwNzUxNH0="); -// Response response = HttpUtil.upload("https://upload.qiniup.com/", formParams); -// return JSONObject.parseObject(response.body().string()); -// } -// -// private static void download() throws IOException { -// HttpUtil.down("https://gitee.com/admin4j/common-http","path/"); -// } -// -//} \ No newline at end of file +package com.shxy.xymanager_common.util.http; +import com.alibaba.fastjson.JSONObject; +import io.github.admin4j.http.HttpRequest; +import io.github.admin4j.http.core.Pair; +import io.github.admin4j.http.util.HttpUtil; +import okhttp3.Response; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class OkHttpUtils { + + public static JSONObject get(String url, Map queryParams) throws IOException { + Response response = HttpUtil.get(url, queryParams); + return JSONObject.parseObject(response.body().string()); + } + + public static JSONObject get(String url, Map queryParams, Map headers) throws IOException { + HttpRequest httpRequest = HttpRequest.get(url); + setParams(queryParams, httpRequest); + Response response = httpRequest.queryParams().headers(headers).execute(); + return JSONObject.parseObject(response.body().string()); + } + + public static JSONObject post(String url, String json) throws IOException { + Response response = HttpUtil.post(url, json); + assert response.body() != null; + return JSONObject.parseObject(response.body().string()); + } + + public static JSONObject postForm(String url, Map formParams) throws IOException { + Response response = HttpUtil.postForm(url, formParams); + assert response.body() != null; + return JSONObject.parseObject(response.body().string()); + } + + public static JSONObject post(String url, String json, Map headers) throws IOException { + HttpRequest httpRequest = HttpRequest.post(url); + httpRequest.setBody(json); + Response response = httpRequest.headers(headers).execute(); + return JSONObject.parseObject(response.body().string()); + } + + private static void setParams(Map queryParams, HttpRequest httpRequest) { + List pairs = new ArrayList<>(queryParams.size()); + queryParams.forEach((x, y) -> pairs.add(Pair.of(x, y))); + if (pairs.size() > 0) { + pairs.forEach(httpRequest::queryParams); + } + } + + private static JSONObject upload() throws IOException { + File file = new File("C:\\Users\\andanyang\\Downloads\\Sql.txt"); + Map formParams = new HashMap<>(); + formParams.put("key", "test"); + formParams.put("file", file); + formParams.put("token", "WXyUseb-D4sCum-EvTIDYL-mEehwDtrSBg-Zca7t:qgOcR2gUoKmxt-VnsNb657Oatzo=:eyJzY29wZSI6InpoYW56aGkiLCJkZWFkbGluZSI6MTY2NTMwNzUxNH0="); + Response response = HttpUtil.upload("https://upload.qiniup.com/", formParams); + return JSONObject.parseObject(response.body().string()); + } + + private static void download() throws IOException { + HttpUtil.down("https://gitee.com/admin4j/common-http","path/"); + } + +} \ No newline at end of file diff --git a/xymanager_common/src/main/java/com/shxy/xymanager_common/util/xinyin/AESEncoder.java b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/xinyin/AESEncoder.java new file mode 100644 index 0000000..f8f43d7 --- /dev/null +++ b/xymanager_common/src/main/java/com/shxy/xymanager_common/util/xinyin/AESEncoder.java @@ -0,0 +1,162 @@ +package com.shxy.xymanager_common.util.xinyin; + +import sun.misc.BASE64Decoder; +import sun.misc.BASE64Encoder; + +import javax.crypto.*; +import javax.crypto.spec.SecretKeySpec; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; + +public class AESEncoder { + public static final String jiamiguize = "SHA1PRNG"; + + /* + * 加密 1.构造密钥生成器 2.根据ecnodeRules规则初始化密钥生成器 3.产生密钥 4.创建和初始化密码器 5.内容加密 6.返回字符串 + */ + public static String AESEncode(String encodeRules, String content) { + try { + // 1.构造密钥生成器,指定为AES算法,不区分大小写 + KeyGenerator keygen = KeyGenerator.getInstance("AES"); + // 2.根据ecnodeRules规则初始化密钥生成器 + // 生成一个128位的随机源,根据传入的字节数组 + /** 【在linux下ase加密每次生成会不同,采用以下方式可避免】 **/ + SecureRandom secureRandom = SecureRandom.getInstance(jiamiguize); + secureRandom.setSeed(encodeRules.getBytes()); + + keygen.init(128, secureRandom); + // 3.产生原始对称密钥 + SecretKey original_key = keygen.generateKey(); + // 4.获得原始对称密钥的字节数组 + byte[] raw = original_key.getEncoded(); + // 5.根据字节数组生成AES密钥 + SecretKey key = new SecretKeySpec(raw, "AES"); + // 6.根据指定算法AES自成密码器 + Cipher cipher = Cipher.getInstance("AES"); + // 7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二个参数为使用的KEY + cipher.init(Cipher.ENCRYPT_MODE, key); + // 8.获取加密内容的字节数组(这里要设置为utf-8)不然内容中如果有中文和英文混合中文就会解密为乱码 + byte[] byte_encode = content.getBytes("utf-8"); + // 9.根据密码器的初始化方式--加密:将数据加密 + byte[] byte_AES = cipher.doFinal(byte_encode); + // 10.将加密后的数据转换为字符串 + // 这里用Base64Encoder中会找不到包 + // 解决办法: + // 在项目的Build path中先移除JRE System Library,再添加库JRE System Library,重新编译后就一切正常了。 + String AES_encode = new String(new BASE64Encoder().encode(byte_AES)); + // 11.将字符串返回 + return AES_encode; + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (NoSuchPaddingException e) { + e.printStackTrace(); + } catch (InvalidKeyException e) { + e.printStackTrace(); + } catch (IllegalBlockSizeException e) { + e.printStackTrace(); + } catch (BadPaddingException e) { + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + // 如果有错就返加nulll + return null; + } + + /* + * 解密 解密过程: 1.同加密1-4步 2.将加密后的字符串反纺成byte[]数组 3.将加密内容解密 + */ + public static String AESDecode(String encodeRules, String content) { + try { + // 1.构造密钥生成器,指定为AES算法,不区分大小写 + KeyGenerator keygen = KeyGenerator.getInstance("AES"); + // 2.根据ecnodeRules规则初始化密钥生成器 + // 生成一个128位的随机源,根据传入的字节数组 + + /** 【在linux下ase加密每次生成会不同,采用以下方式可避免】 **/ + SecureRandom secureRandom = SecureRandom.getInstance(jiamiguize); + secureRandom.setSeed(encodeRules.getBytes()); + + keygen.init(128, secureRandom); + // 3.产生原始对称密钥 + SecretKey original_key = keygen.generateKey(); + // 4.获得原始对称密钥的字节数组 + byte[] raw = original_key.getEncoded(); + // 5.根据字节数组生成AES密钥 + SecretKey key = new SecretKeySpec(raw, "AES"); + // 6.根据指定算法AES自成密码器 + Cipher cipher = Cipher.getInstance("AES"); + // 7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密(Decrypt_mode)操作,第二个参数为使用的KEY + cipher.init(Cipher.DECRYPT_MODE, key); + // 8.将加密并编码后的内容解码成字节数组 + byte[] byte_content = new BASE64Decoder().decodeBuffer(content); + /* + * 解密 + */ + byte[] byte_decode = cipher.doFinal(byte_content); + String AES_decode = new String(byte_decode, "utf-8"); + return AES_decode; + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (NoSuchPaddingException e) { + e.printStackTrace(); + } catch (InvalidKeyException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (IllegalBlockSizeException e) { + e.printStackTrace(); + } catch (BadPaddingException e) { + e.printStackTrace(); + } + + // 如果有错就返加nulll + return null; + } + + /** + * BASE64加密 + * + * @param key + * @return + * @throws Exception + */ + public static String encryptBASE64(byte[] key) throws Exception { + return (new BASE64Encoder()).encodeBuffer(key); + } + + public static void main(String[] args) throws Exception { + // 秘钥 + String key = "stline1559"; + // 账户 + String usr = "stline_kshtp"; + // 密码 + String pwd = "kshtp@2020"; + // 一次AES加密 + usr = AESEncode(key, usr); + pwd = AESEncode(key, pwd); + // 二次BASE64加密 + usr = encryptBASE64(usr.getBytes()); + pwd = encryptBASE64(pwd.getBytes()); + System.out.println("加密后用户:" + usr); + System.out.println("加密后密码:" + pwd); + + + + + + // 一次BASE64解密 + BASE64Decoder decoder = new BASE64Decoder(); + String nameStr = new String(decoder.decodeBuffer(usr)); + String pwdStr = new String(decoder.decodeBuffer(pwd)); + AESEncoder se = new AESEncoder(); + nameStr = se.AESDecode(key, nameStr);// 解密后的账号 + pwdStr = se.AESDecode(key, pwdStr);// 解密后的密码 + System.out.println("解密后用户:" + nameStr); + System.out.println("解密后密码:" + pwdStr); + } +} diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/interaction/JwtInterceptor.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/interaction/JwtInterceptor.java index 387e0aa..74f975c 100644 --- a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/interaction/JwtInterceptor.java +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/interaction/JwtInterceptor.java @@ -43,37 +43,37 @@ public class JwtInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 忽略带JwtIgnore注解的请求, 不做后续token认证校验 -// if (handler instanceof HandlerMethod) { -// HandlerMethod handlerMethod = (HandlerMethod) handler; -// JwtIgnore jwtIgnore = handlerMethod.getMethodAnnotation(JwtIgnore.class); -// if (jwtIgnore != null) { -// return true; -// } -// } -// if (HttpMethod.GET.name().equals(request.getMethod())) { -// response.setStatus(HttpServletResponse.SC_OK); -// return true; -// } -// // 获取请求头信息authorization信息 -// final String sessionId = request.getHeader("sessionId"); -// if (StrUtil.isBlank(sessionId)) { -// log.info("sessionId为空登录过期"); -// Asserts.fail(401, "登录过期"); -// } else { -// SysUserSession user = sysUserService.selectUserById(sessionId); -// if (user != null) { -// BigInteger expireTime = user.getExpireTime(); -// -// long currentTime = MyDateUtils.TimeMillSecond2Second(new DateTime()); -// if ((currentTime - expireTime.longValue()) > time.longValue()) { -// user.setExpireTime(BigInteger.valueOf(currentTime).add(time)); -// sysUserService.updateUserSession(user); -// } -// } else { -// log.info("sessionId为空登录过期"); -// Asserts.fail(401, "登录过期"); -// } -// } + if (handler instanceof HandlerMethod) { + HandlerMethod handlerMethod = (HandlerMethod) handler; + JwtIgnore jwtIgnore = handlerMethod.getMethodAnnotation(JwtIgnore.class); + if (jwtIgnore != null) { + return true; + } + } + if (HttpMethod.GET.name().equals(request.getMethod())) { + response.setStatus(HttpServletResponse.SC_OK); + return true; + } + // 获取请求头信息authorization信息 + final String sessionId = request.getHeader("sessionId"); + if (StrUtil.isBlank(sessionId)) { + log.info("sessionId为空登录过期"); + Asserts.fail(401, "登录过期"); + } else { + SysUserSession user = sysUserService.selectUserById(sessionId); + if (user != null) { + BigInteger expireTime = user.getExpireTime(); + + long currentTime = MyDateUtils.TimeMillSecond2Second(new DateTime()); + if ((currentTime - expireTime.longValue()) > time.longValue()) { + user.setExpireTime(BigInteger.valueOf(currentTime).add(time)); + sysUserService.updateUserSession(user); + } + } else { + log.info("sessionId为空登录过期"); + Asserts.fail(401, "登录过期"); + } + } return true; } diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/HeNanHttpServiceImpl.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/HeNanHttpServiceImpl.java index d2eec6d..65d2d31 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/HeNanHttpServiceImpl.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/impl/HeNanHttpServiceImpl.java @@ -5,6 +5,7 @@ //import com.shxy.xymanager_common.util.StringUtils; //import com.shxy.xymanager_common.util.http.HttpStatus; //import com.shxy.xymanager_common.util.http.OkHttpUtils; +//import com.shxy.xymanager_common.util.xinyin.AESEncoder; //import com.shxy.xymanager_service.service.HeNanHttpService; //import lombok.extern.slf4j.Slf4j; //import org.springframework.beans.factory.annotation.Value; @@ -28,8 +29,6 @@ // @Value("${cma.port}") // public String dname; // -// -// // /* // * 推送常态巡查图片数据 // * */ @@ -75,8 +74,20 @@ // * 发送加密的账号密码,获取token,token有效期自获取开始30分钟 // * */ // @Override -// public Map getToken() { +// public Map getToken() throws Exception { // JSONObject jsonObject = new JSONObject(); +// // 秘钥 +// String key = "stline1559"; +// // 账户 +// String usr = "stline_kshtp"; +// // 密码 +// String pwd = "kshtp@2020"; +// // 一次AES加密 +// usr = AESEncoder.AESEncode(key, name); +// pwd = AESEncoder.AESEncode(key, password); +// // 二次BASE64加密 +// usr = AESEncoder.encryptBASE64(usr.getBytes()); +// pwd = AESEncoder.encryptBASE64(pwd.getBytes()); // jsonObject.put("name", name); // jsonObject.put("pwd", password); // jsonObject.put("d_name", dname); diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/HeNanHttpService.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/HeNanHttpService.java index e96273b..51510c2 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/service/HeNanHttpService.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/service/HeNanHttpService.java @@ -21,5 +21,5 @@ public interface HeNanHttpService { /* * 发送加密的账号密码,获取token,token有效期自获取开始30分钟 * */ - Map getToken(); + Map getToken() throws Exception; }