mirror of
https://github.com/jeecgboot/JeecgBoot.git
synced 2025-12-26 16:26:41 +08:00
Jeecg-Boot 2.1.0 版本发布,Online表单开发&在线代码生成器(迟到的版本)
This commit is contained in:
@ -33,4 +33,11 @@ public @interface AutoLog {
|
||||
* @return 0:操作日志;1:登录日志;2:定时任务;
|
||||
*/
|
||||
int logType() default CommonConstant.LOG_TYPE_2;
|
||||
|
||||
/**
|
||||
* 操作日志类型
|
||||
*
|
||||
* @return (1查询,2添加,3修改,4删除)
|
||||
*/
|
||||
int operateType() default 0;
|
||||
}
|
||||
|
||||
@ -22,5 +22,15 @@ public interface CacheConstant {
|
||||
*/
|
||||
public static final String LOGIN_USER_RULES_CACHE = "loginUser_cacheRules";
|
||||
|
||||
/**
|
||||
* 部门信息缓存
|
||||
*/
|
||||
public static final String DEPART_INFO_CACHE = "departCache_info";
|
||||
|
||||
|
||||
/**
|
||||
* 部门id信息缓存
|
||||
*/
|
||||
public static final String DEPART_IDMODEL_CACHE = "departCache_idmodel";
|
||||
|
||||
}
|
||||
|
||||
@ -26,11 +26,41 @@ public interface CommonConstant {
|
||||
* 系统日志类型: 登录
|
||||
*/
|
||||
public static final int LOG_TYPE_1 = 1;
|
||||
|
||||
|
||||
/**
|
||||
* 系统日志类型: 操作
|
||||
*/
|
||||
public static final int LOG_TYPE_2 = 2;
|
||||
|
||||
/**
|
||||
* 操作日志类型: 查询
|
||||
*/
|
||||
public static final int OPERATE_TYPE_1 = 1;
|
||||
|
||||
/**
|
||||
* 操作日志类型: 添加
|
||||
*/
|
||||
public static final int OPERATE_TYPE_2 = 2;
|
||||
|
||||
/**
|
||||
* 操作日志类型: 更新
|
||||
*/
|
||||
public static final int OPERATE_TYPE_3 = 3;
|
||||
|
||||
/**
|
||||
* 操作日志类型: 删除
|
||||
*/
|
||||
public static final int OPERATE_TYPE_4 = 4;
|
||||
|
||||
/**
|
||||
* 操作日志类型: 倒入
|
||||
*/
|
||||
public static final int OPERATE_TYPE_5 = 5;
|
||||
|
||||
/**
|
||||
* 操作日志类型: 导出
|
||||
*/
|
||||
public static final int OPERATE_TYPE_6 = 6;
|
||||
|
||||
|
||||
/** {@code 500 Server Error} (HTTP/1.0 - RFC 1945) */
|
||||
|
||||
@ -12,12 +12,15 @@ public interface DataBaseConstant {
|
||||
/**
|
||||
* 数据-所属机构编码
|
||||
*/
|
||||
public static final String SYS_MULTI_ORG_CODE = "sysMultiOrgCode";
|
||||
|
||||
public static final String SYS_ORG_CODE_TABLE = "sys_org_code";
|
||||
/**
|
||||
* 数据-所属机构编码
|
||||
*/
|
||||
public static final String SYS_ORG_CODE_TABLE = "sys_org_code";
|
||||
public static final String SYS_MULTI_ORG_CODE = "sysMultiOrgCode";
|
||||
/**
|
||||
* 数据-所属机构编码
|
||||
*/
|
||||
public static final String SYS_MULTI_ORG_CODE_TABLE = "sys_multi_org_code";
|
||||
/**
|
||||
* 数据-系统用户编码(对应登录用户账号)
|
||||
*/
|
||||
|
||||
@ -7,6 +7,7 @@ import org.springframework.dao.DuplicateKeyException;
|
||||
import org.springframework.web.HttpRequestMethodNotSupportedException;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||
import org.springframework.web.multipart.MaxUploadSizeExceededException;
|
||||
import org.springframework.web.servlet.NoHandlerFoundException;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -64,5 +65,14 @@ public class JeecgBootExceptionHandler {
|
||||
log.error(e.getMessage(), e);
|
||||
return Result.error("没有权限,请联系管理员授权");
|
||||
}
|
||||
|
||||
/**
|
||||
* spring默认上传大小100MB 超出大小捕获异常MaxUploadSizeExceededException
|
||||
*/
|
||||
@ExceptionHandler(MaxUploadSizeExceededException.class)
|
||||
public Result<?> handleMaxUploadSizeExceededException(MaxUploadSizeExceededException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return Result.error("文件大小超出10MB限制, 请压缩或降低文件质量! ");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -55,7 +55,7 @@ public class QueryGenerator {
|
||||
private static SimpleDateFormat getTime(){
|
||||
SimpleDateFormat time = local.get();
|
||||
if(time == null){
|
||||
time = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
|
||||
time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
local.set(time);
|
||||
}
|
||||
return time;
|
||||
|
||||
@ -155,7 +155,7 @@ public class JwtUtil {
|
||||
}
|
||||
}
|
||||
//替换为系统登录用户真实名字
|
||||
if (key.equals(DataBaseConstant.SYS_USER_NAME)|| key.equals(DataBaseConstant.SYS_USER_NAME_TABLE)) {
|
||||
else if (key.equals(DataBaseConstant.SYS_USER_NAME)|| key.equals(DataBaseConstant.SYS_USER_NAME_TABLE)) {
|
||||
if(user==null) {
|
||||
returnValue = sysUser.getRealname();
|
||||
}else {
|
||||
@ -164,7 +164,7 @@ public class JwtUtil {
|
||||
}
|
||||
|
||||
//替换为系统用户登录所使用的机构编码
|
||||
if (key.equals(DataBaseConstant.SYS_ORG_CODE)|| key.equals(DataBaseConstant.SYS_ORG_CODE_TABLE)) {
|
||||
else if (key.equals(DataBaseConstant.SYS_ORG_CODE)|| key.equals(DataBaseConstant.SYS_ORG_CODE_TABLE)) {
|
||||
if(user==null) {
|
||||
returnValue = sysUser.getOrgCode();
|
||||
}else {
|
||||
@ -172,7 +172,7 @@ public class JwtUtil {
|
||||
}
|
||||
}
|
||||
//替换为系统用户所拥有的所有机构编码
|
||||
if (key.equals(DataBaseConstant.SYS_MULTI_ORG_CODE)|| key.equals(DataBaseConstant.SYS_MULTI_ORG_CODE)) {
|
||||
else if (key.equals(DataBaseConstant.SYS_MULTI_ORG_CODE)|| key.equals(DataBaseConstant.SYS_MULTI_ORG_CODE_TABLE)) {
|
||||
if(user.isOneDepart()) {
|
||||
returnValue = user.getSysMultiOrgCode().get(0);
|
||||
}else {
|
||||
@ -180,18 +180,23 @@ public class JwtUtil {
|
||||
}
|
||||
}
|
||||
//替换为当前系统时间(年月日)
|
||||
if (key.equals(DataBaseConstant.SYS_DATE)|| key.equals(DataBaseConstant.SYS_DATE_TABLE)) {
|
||||
else if (key.equals(DataBaseConstant.SYS_DATE)|| key.equals(DataBaseConstant.SYS_DATE_TABLE)) {
|
||||
returnValue = user.getSysDate();
|
||||
}
|
||||
//替换为当前系统时间(年月日时分秒)
|
||||
if (key.equals(DataBaseConstant.SYS_TIME)|| key.equals(DataBaseConstant.SYS_TIME_TABLE)) {
|
||||
else if (key.equals(DataBaseConstant.SYS_TIME)|| key.equals(DataBaseConstant.SYS_TIME_TABLE)) {
|
||||
returnValue = user.getSysTime();
|
||||
}
|
||||
//流程状态默认值(默认未发起)
|
||||
if (key.equals(DataBaseConstant.BPM_STATUS_TABLE)|| key.equals(DataBaseConstant.BPM_STATUS_TABLE)) {
|
||||
else if (key.equals(DataBaseConstant.BPM_STATUS)|| key.equals(DataBaseConstant.BPM_STATUS_TABLE)) {
|
||||
returnValue = "1";
|
||||
}
|
||||
if(returnValue!=null){returnValue = returnValue + moshi;}
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NjUzMzY1MTMsInVzZXJuYW1lIjoiYWRtaW4ifQ.xjhud_tWCNYBOg_aRlMgOdlZoWFFKB_givNElHNw3X0";
|
||||
System.out.println(JwtUtil.getUsername(token));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,8 @@ package org.jeecg.common.system.vo;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
@ -9,6 +11,7 @@ import lombok.experimental.Accessors;
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class DictModel implements Serializable{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
@ -38,6 +38,11 @@ public class LoginUser {
|
||||
*/
|
||||
private String realname;
|
||||
|
||||
/**
|
||||
* 登录人密码
|
||||
*/
|
||||
private String password;
|
||||
|
||||
/**
|
||||
* 当前登录部门code
|
||||
*/
|
||||
|
||||
@ -0,0 +1,66 @@
|
||||
package org.jeecg.common.util;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
public enum DySmsEnum {
|
||||
|
||||
LOGIN_TEMPLATE_CODE("SMS_167040816","JEECG","code"),
|
||||
FORGET_PASSWORD_TEMPLATE_CODE("SMS_167040816","JEECG","code"),
|
||||
REGISTER_TEMPLATE_CODE("SMS_144146309","JEECG","code");
|
||||
|
||||
/**
|
||||
* 短信模板编码
|
||||
*/
|
||||
private String templateCode;
|
||||
/**
|
||||
* 签名
|
||||
*/
|
||||
private String signName;
|
||||
/**
|
||||
* 短信模板必需的数据名称,多个key以逗号分隔,此处配置作为校验
|
||||
*/
|
||||
private String keys;
|
||||
|
||||
private DySmsEnum(String templateCode,String signName,String keys) {
|
||||
this.templateCode = templateCode;
|
||||
this.signName = signName;
|
||||
this.keys = keys;
|
||||
}
|
||||
|
||||
public String getTemplateCode() {
|
||||
return templateCode;
|
||||
}
|
||||
|
||||
public void setTemplateCode(String templateCode) {
|
||||
this.templateCode = templateCode;
|
||||
}
|
||||
|
||||
public String getSignName() {
|
||||
return signName;
|
||||
}
|
||||
|
||||
public void setSignName(String signName) {
|
||||
this.signName = signName;
|
||||
}
|
||||
|
||||
public String getKeys() {
|
||||
return keys;
|
||||
}
|
||||
|
||||
public void setKeys(String keys) {
|
||||
this.keys = keys;
|
||||
}
|
||||
|
||||
public static DySmsEnum toEnum(String templateCode) {
|
||||
if(StringUtils.isEmpty(templateCode)){
|
||||
return null;
|
||||
}
|
||||
for(DySmsEnum item : DySmsEnum.values()) {
|
||||
if(item.getTemplateCode().equals(templateCode)) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,8 @@ package org.jeecg.common.util;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.aliyuncs.DefaultAcsClient;
|
||||
import com.aliyuncs.IAcsClient;
|
||||
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
|
||||
@ -31,32 +33,27 @@ public class DySmsHelper {
|
||||
static final String domain = "dysmsapi.aliyuncs.com";
|
||||
|
||||
// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
|
||||
static final String accessKeyId = "?";
|
||||
static final String accessKeySecret = "?";
|
||||
|
||||
/**
|
||||
* 登陆时采用的短信发送模板编码
|
||||
*/
|
||||
public static final String LOGIN_TEMPLATE_CODE="SMS_167040816";
|
||||
|
||||
/**
|
||||
* 忘记密码时采用的短信发送模板编码
|
||||
*/
|
||||
public static final String FORGET_PASSWORD_TEMPLATE_CODE="SMS_167040816";
|
||||
static String accessKeyId;
|
||||
static String accessKeySecret;
|
||||
|
||||
public static void setAccessKeyId(String accessKeyId) {
|
||||
DySmsHelper.accessKeyId = accessKeyId;
|
||||
}
|
||||
|
||||
public static void setAccessKeySecret(String accessKeySecret) {
|
||||
DySmsHelper.accessKeySecret = accessKeySecret;
|
||||
}
|
||||
|
||||
public static String getAccessKeyId() {
|
||||
return accessKeyId;
|
||||
}
|
||||
|
||||
public static String getAccessKeySecret() {
|
||||
return accessKeySecret;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 注册时采用的短信发送模板编码
|
||||
*/
|
||||
public static final String REGISTER_TEMPLATE_CODE="SMS_144146309";
|
||||
|
||||
/**
|
||||
* 必填:短信签名-可在短信控制台中找到
|
||||
*/
|
||||
public static final String signName="JEECG";
|
||||
|
||||
|
||||
public static boolean sendSms(String phone,String code,String templateCode) throws ClientException {
|
||||
public static boolean sendSms(String phone,JSONObject templateParamJson,DySmsEnum dySmsEnum) throws ClientException {
|
||||
//可自助调整超时时间
|
||||
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
|
||||
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
|
||||
@ -66,16 +63,19 @@ public class DySmsHelper {
|
||||
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
|
||||
IAcsClient acsClient = new DefaultAcsClient(profile);
|
||||
|
||||
//验证json参数
|
||||
validateParam(templateParamJson,dySmsEnum);
|
||||
|
||||
//组装请求对象-具体描述见控制台-文档部分内容
|
||||
SendSmsRequest request = new SendSmsRequest();
|
||||
//必填:待发送手机号
|
||||
request.setPhoneNumbers(phone);
|
||||
//必填:短信签名-可在短信控制台中找到
|
||||
request.setSignName(signName);
|
||||
request.setSignName(dySmsEnum.getSignName());
|
||||
//必填:短信模板-可在短信控制台中找到
|
||||
request.setTemplateCode("SMS_167040816");
|
||||
request.setTemplateCode(dySmsEnum.getTemplateCode());
|
||||
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
|
||||
request.setTemplateParam("{\"code\":\""+code+"\"}");
|
||||
request.setTemplateParam(templateParamJson.toJSONString());
|
||||
|
||||
//选填-上行短信扩展码(无特殊需求用户请忽略此字段)
|
||||
//request.setSmsUpExtendCode("90997");
|
||||
@ -96,10 +96,21 @@ public class DySmsHelper {
|
||||
|
||||
}
|
||||
|
||||
private static void validateParam(JSONObject templateParamJson,DySmsEnum dySmsEnum) {
|
||||
String keys = dySmsEnum.getKeys();
|
||||
String [] keyArr = keys.split(",");
|
||||
for(String item :keyArr) {
|
||||
if(!templateParamJson.containsKey(item)) {
|
||||
throw new RuntimeException("模板缺少参数:"+item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) throws ClientException, InterruptedException {
|
||||
|
||||
sendSms("13800138000", "123456", FORGET_PASSWORD_TEMPLATE_CODE);
|
||||
JSONObject obj = new JSONObject();
|
||||
obj.put("code", "1234");
|
||||
sendSms("13800138000", obj, DySmsEnum.FORGET_PASSWORD_TEMPLATE_CODE);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -88,8 +88,9 @@ public class PasswordUtil {
|
||||
Cipher cipher = Cipher.getInstance(ALGORITHM);
|
||||
|
||||
cipher.init(Cipher.ENCRYPT_MODE, key, parameterSpec);
|
||||
|
||||
encipheredData = cipher.doFinal(plaintext.getBytes());
|
||||
//update-begin-author:sccott date:20180815 for:中文作为用户名时,加密的密码windows和linux会得到不同的结果 gitee/issues/IZUD7
|
||||
encipheredData = cipher.doFinal(plaintext.getBytes("utf-8"));
|
||||
//update-end-author:sccott date:20180815 for:中文作为用户名时,加密的密码windows和linux会得到不同的结果 gitee/issues/IZUD7
|
||||
} catch (Exception e) {
|
||||
}
|
||||
return bytesToHexString(encipheredData);
|
||||
|
||||
@ -62,7 +62,30 @@ public class SqlInjectionUtil {
|
||||
*/
|
||||
@Deprecated
|
||||
public static void specialFilterContent(String value) {
|
||||
String specialXssStr = "exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |;|+|,";
|
||||
String specialXssStr = "exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |;|+|";
|
||||
String[] xssArr = specialXssStr.split("\\|");
|
||||
if (value == null || "".equals(value)) {
|
||||
return;
|
||||
}
|
||||
value = value.toLowerCase();// 统一转为小写
|
||||
for (int i = 0; i < xssArr.length; i++) {
|
||||
if (value.indexOf(xssArr[i]) > -1) {
|
||||
log.error("请注意,值可能存在SQL注入风险!---> {}", value);
|
||||
throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @特殊方法(不通用) 仅用于Online报表SQL解析,注入过滤
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
@Deprecated
|
||||
public static void specialFilterContentForOnlineReport(String value) {
|
||||
String specialXssStr = "exec |insert |delete |update |drop |chr |mid |master |truncate |char |declare |";
|
||||
String[] xssArr = specialXssStr.split("\\|");
|
||||
if (value == null || "".equals(value)) {
|
||||
return;
|
||||
|
||||
@ -0,0 +1,77 @@
|
||||
package org.jeecg.common.util.security;
|
||||
|
||||
import cn.hutool.core.codec.Base64Decoder;
|
||||
import cn.hutool.core.codec.Base64Encoder;
|
||||
import cn.hutool.crypto.SecureUtil;
|
||||
import cn.hutool.crypto.asymmetric.KeyType;
|
||||
import cn.hutool.crypto.asymmetric.RSA;
|
||||
import cn.hutool.crypto.asymmetric.Sign;
|
||||
import cn.hutool.crypto.asymmetric.SignAlgorithm;
|
||||
import cn.hutool.crypto.symmetric.AES;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import org.jeecg.common.util.security.entity.*;
|
||||
|
||||
import javax.crypto.SecretKey;
|
||||
import java.security.KeyPair;
|
||||
|
||||
public class SecurityTools {
|
||||
public static final String ALGORITHM = "AES/ECB/PKCS5Padding";
|
||||
|
||||
public static SecurityResp valid(SecurityReq req) {
|
||||
SecurityResp resp=new SecurityResp();
|
||||
String pubKey=req.getPubKey();
|
||||
String aesKey=req.getAesKey();
|
||||
String data=req.getData();
|
||||
String signData=req.getSignData();
|
||||
RSA rsa=new RSA(null, Base64Decoder.decode(pubKey));
|
||||
Sign sign= new Sign(SignAlgorithm.SHA1withRSA,null,pubKey);
|
||||
|
||||
|
||||
|
||||
byte[] decryptAes = rsa.decrypt(aesKey, KeyType.PublicKey);
|
||||
//log.info("rsa解密后的秘钥"+ Base64Encoder.encode(decryptAes));
|
||||
AES aes = SecureUtil.aes(decryptAes);
|
||||
|
||||
String dencrptValue =aes.decryptStr(data);
|
||||
//log.info("解密后报文"+dencrptValue);
|
||||
resp.setData(new JSONObject(dencrptValue));
|
||||
|
||||
boolean verify = sign.verify(dencrptValue.getBytes(), Base64Decoder.decode(signData));
|
||||
resp.setSuccess(verify);
|
||||
return resp;
|
||||
}
|
||||
|
||||
public static SecuritySignResp sign(SecuritySignReq req) {
|
||||
SecretKey secretKey = SecureUtil.generateKey(ALGORITHM);
|
||||
byte[] key= secretKey.getEncoded();
|
||||
String prikey=req.getPrikey();
|
||||
String data=req.getData();
|
||||
|
||||
AES aes = SecureUtil.aes(key);
|
||||
aes.getSecretKey().getEncoded();
|
||||
String encrptData =aes.encryptBase64(data);
|
||||
RSA rsa=new RSA(prikey,null);
|
||||
byte[] encryptAesKey = rsa.encrypt(secretKey.getEncoded(), KeyType.PrivateKey);
|
||||
//log.info(("rsa加密过的秘钥=="+Base64Encoder.encode(encryptAesKey));
|
||||
|
||||
Sign sign= new Sign(SignAlgorithm.SHA1withRSA,prikey,null);
|
||||
byte[] signed = sign.sign(data.getBytes());
|
||||
|
||||
//log.info(("签名数据===》》"+Base64Encoder.encode(signed));
|
||||
|
||||
SecuritySignResp resp=new SecuritySignResp();
|
||||
resp.setAesKey(Base64Encoder.encode(encryptAesKey));
|
||||
resp.setData(encrptData);
|
||||
resp.setSignData(Base64Encoder.encode(signed));
|
||||
return resp;
|
||||
}
|
||||
public static MyKeyPair generateKeyPair(){
|
||||
KeyPair keyPair= SecureUtil.generateKeyPair(SignAlgorithm.SHA1withRSA.getValue(),2048);
|
||||
String priKey= Base64Encoder.encode(keyPair.getPrivate().getEncoded());
|
||||
String pubkey= Base64Encoder.encode(keyPair.getPublic().getEncoded());
|
||||
MyKeyPair resp=new MyKeyPair();
|
||||
resp.setPriKey(priKey);
|
||||
resp.setPubKey(pubkey);
|
||||
return resp;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
package org.jeecg.common.util.security.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class MyKeyPair {
|
||||
private String priKey;
|
||||
private String pubKey;
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
package org.jeecg.common.util.security.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SecurityReq {
|
||||
private String data;
|
||||
private String pubKey;
|
||||
private String signData;
|
||||
private String aesKey;
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
package org.jeecg.common.util.security.entity;
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SecurityResp {
|
||||
private Boolean success;
|
||||
private JSONObject data;
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
package org.jeecg.common.util.security.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SecuritySignReq {
|
||||
private String data;
|
||||
private String prikey;
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
package org.jeecg.common.util.security.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SecuritySignResp {
|
||||
private String data;
|
||||
private String signData;
|
||||
private String aesKey;
|
||||
}
|
||||
Reference in New Issue
Block a user