From f8ccb97d9c024cb39023902e771d53d7b753b2a0 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Sun, 28 Apr 2024 15:32:49 +0800 Subject: [PATCH 01/28] feat: add aes/rsa encrypt --- .../controller/EncryptController.java | 51 ++++ .../application/filter/EncryptApiFilter.java | 100 +++++++ .../wrapper/EncryptRequestWrapper.java | 257 ++++++++++++++++++ .../application/wrapper/ResponseWrapper.java | 114 ++++++++ .../pom.xml | 13 + .../auth/common/entity/ApiEncryptRes.java | 19 ++ .../auth/common/utils/AESUtils.java | 110 ++++++++ .../auth/common/utils/ApiSecurityUtils.java | 44 +++ .../schisandra/auth/common/utils/MD5Util.java | 61 +++++ .../auth/common/utils/RSAUtils.java | 171 ++++++++++++ 10 files changed, 940 insertions(+) create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/entity/ApiEncryptRes.java create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/AESUtils.java create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/ApiSecurityUtils.java create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/MD5Util.java create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/RSAUtils.java diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java new file mode 100644 index 0000000..45d724f --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java @@ -0,0 +1,51 @@ +package com.schisandra.auth.application.controller; + +import com.schisandra.auth.common.entity.Result; +import com.schisandra.auth.common.redis.RedisUtil; +import com.schisandra.auth.common.utils.MD5Util; +import com.schisandra.auth.common.utils.RSAUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.Map; + +/** + * @ClassName EncryptController + * @Description TODO + * @Author L + * @Date 2024/1/29 9:18 + */ +@RestController +@RequestMapping("/encrypt") +@Slf4j +public class EncryptController { + @Resource + private RedisUtil redisUtil; + private String authPublicKeyPrefix = "auth.publicKey"; + private String authPrivateKeyPrefix = "auth.privateKey"; + + @GetMapping("/getPublicKey") + public Result getPublicKey() throws Exception { + //获取当前登陆账号对应的token,这行代码就不贴了。 + String token="12345"; + String publicKey=""; + if (StringUtils.isNotBlank(token)) { + Map stringStringMap = RSAUtils.genKeyPair(); + publicKey = stringStringMap.get("publicKey"); + String privateKey = stringStringMap.get("privateKey"); + String md5Token = MD5Util.md5(token); + //这个地方的存放时间根据你的token存放时间走 + redisUtil.set(md5Token + "publicKey", publicKey); + redisUtil.set(md5Token + "privateKey", privateKey); + return Result.ok(publicKey); + } + return Result.ok(publicKey); + } + +} + diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java new file mode 100644 index 0000000..8bcbb28 --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java @@ -0,0 +1,100 @@ +package com.schisandra.auth.application.filter; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.servlet.ServletUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.schisandra.auth.application.wrapper.EncryptRequestWrapper; +import com.schisandra.auth.application.wrapper.ResponseWrapper; +import com.schisandra.auth.common.entity.ApiEncryptRes; +import com.schisandra.auth.common.utils.ApiSecurityUtils; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.boot.web.servlet.filter.OrderedFilter; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +@Slf4j +@Component +public class EncryptApiFilter extends OncePerRequestFilter implements OrderedFilter { + public static final int DEFAULT_ORDER = Integer.MAX_VALUE; + + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + String servletPath = request.getServletPath(); + + ResponseWrapper wrapper = new ResponseWrapper(response); + String requestContent = null; + + if (ServletUtil.isMultipart(request)) { + } else { + EncryptRequestWrapper encryptRequestWrapper = EncryptRequestWrapper.newOrGetMultiReadHttpServletRequest(request); + requestContent = encryptRequestWrapper.getBody(); + request = encryptRequestWrapper; + + } + log.debug("{}>>>{}", servletPath, requestContent); + + try { + filterChain.doFilter(request, wrapper); + } finally { + try { + process(request, wrapper, response); + } catch (Exception e) { + log.error("AesFilter error", e); + } + } + } + + @SneakyThrows + protected void process(HttpServletRequest request, ResponseWrapper responseWrapper, HttpServletResponse response) { + + String servletPath = request.getRequestURI(); + String isencrypt = request.getHeader("Isencrypt"); + ServletOutputStream out = response.getOutputStream(); + if (ResponseWrapper.isJsonContentType(responseWrapper.getContentType())) { + String responseContent = responseWrapper.getTextContent(); + if (StrUtil.isNotEmpty(responseContent)&&StringUtils.isNotBlank(isencrypt)) { + String JSPublicKey = ((EncryptRequestWrapper)request).getJSPublicKey(); + if (StringUtils.isNotBlank(JSPublicKey)) { + ApiEncryptRes apiEncryptRes = ApiSecurityUtils.encrypt(JSON.toJSONString(responseContent), JSPublicKey); + responseContent = JSONUtil.toJsonStr(apiEncryptRes); + } + log.info("{}<<<{}", servletPath, responseContent); + byte[] bytes = responseContent.getBytes(StandardCharsets.UTF_8); + response.setContentLength(bytes.length); + out.write(bytes); + out.flush(); + out.close(); + } else { + responseWrapper.getByteArrayOutputStream().writeTo(out); + out.flush(); + out.close(); + } + } else { + responseWrapper.getByteArrayOutputStream().writeTo(out); + out.flush(); + out.close(); + } + } + + @Override + public void afterPropertiesSet() throws ServletException { + super.afterPropertiesSet(); + } + + @Override + public int getOrder() { + return DEFAULT_ORDER; + } +} diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java new file mode 100644 index 0000000..13fc264 --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java @@ -0,0 +1,257 @@ +package com.schisandra.auth.application.wrapper; + +import cn.hutool.core.convert.Convert; +import com.alibaba.fastjson.JSONObject; +import com.schisandra.auth.common.redis.RedisUtil; +import com.schisandra.auth.common.utils.ApiSecurityUtils; +import com.schisandra.auth.common.utils.MD5Util; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.ReadListener; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import java.io.*; + + +import cn.hutool.core.io.FastByteArrayOutputStream; +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.http.ContentType; + + +import lombok.SneakyThrows; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; +import org.springframework.web.multipart.support.StandardServletMultipartResolver; +import org.springframework.web.util.WebUtils; + + +import java.util.TreeMap; + +/** + * @ClassName requestWrapper + * @Description TODO + * @Author landaiqing + * @Date 2024/1/31 17:58 + */ + +/** + * 确保request可以多次读取 + */ + +@Slf4j +public class EncryptRequestWrapper extends HttpServletRequestWrapper { + + + + //2024-02-02由于在过滤器中无法直接通过Autowired获取Bean,因此需要通过spring上下文来获取IOC管理的实体类 +// @Autowired +// private RedisUtil redisUtil; + + protected FastByteArrayOutputStream cachedContent; + protected String JSPublicKey; + protected EncryptRequestWrapper(HttpServletRequest request ) { + + super(request); + RedisUtil redisUtils =getBean(RedisUtil.class, request); + this.copyBody(redisUtils); + + + } + + /** + * + * 此处主要是用于读取 RedisUtil + * @param clazz + * @param request + * @param + * @return + */ + public T getBean(Class clazz, HttpServletRequest request){ + WebApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()); + return applicationContext.getBean(clazz); + } + + public static EncryptRequestWrapper newOrGetMultiReadHttpServletRequest(HttpServletRequest request) { + EncryptRequestWrapper multiReadHttpServletRequest = getMultiReadHttpServletRequest(request); + if (null != multiReadHttpServletRequest) { + return multiReadHttpServletRequest; + } else { + String contentType = request.getContentType(); + if (contentType != null && contentType.contains(ContentType.MULTIPART.getValue())) { + // 将转化后的 request 放入过滤链中 + request = new StandardServletMultipartResolver().resolveMultipart(request); + } + return new EncryptRequestWrapper(request); + } + } + + public static EncryptRequestWrapper getMultiReadHttpServletRequest(HttpServletRequest request) { + EncryptRequestWrapper nativeRequest = WebUtils.getNativeRequest(request, EncryptRequestWrapper.class); + if (null != nativeRequest) { + return nativeRequest; + } else if (request instanceof EncryptRequestWrapper) { + return (EncryptRequestWrapper) request; + } else { + return null; + } + } + //重新读取请求,因为request只可以被读取一次,需要重新设置为可多次读取 + @SneakyThrows + protected void copyBody(RedisUtil redisUtils) { + int length = this.getContentLength(); + if (length > 0) { + cachedContent = IoUtil.read(getRequest().getInputStream()); + if (StringUtils.isNotBlank(this.getHeader("Isencrypt"))&&StringUtils.isNotBlank(this.getHeader("X-Access-Token"))) { + String body = new String(cachedContent.toByteArray()); + log.info("------------------- body = " + body + "------------------------"); + if (StringUtils.isNotBlank(body)) { + JSONObject jsonBody = JSONObject.parseObject(body); + if(null != jsonBody){ + String dataEncrypt = jsonBody.getString("data"); + String aeskey = jsonBody.getString("aeskey"); + JSPublicKey = jsonBody.getString("frontPublicKey"); + String data; + JSONObject json = null; + log.info("------------------- dataEncrypt = " + dataEncrypt + "------------------------"); + log.info("------------------- aesKey = " + aeskey + "------------------------"); + String token = this.getHeader("X-Access-Token"); + String md5Token = MD5Util.md5(token); + String privateKey = Convert.toStr(redisUtils.get(md5Token + "privateKey")); + data = ApiSecurityUtils.decrypt(aeskey, dataEncrypt,privateKey); + // 如果数据不为空就编译 + if (StringUtils.isNotBlank(data)) { + //如果参数为空前端传回undefined + if ("undefined".equalsIgnoreCase(data)) { + json = new JSONObject(); + } else { + json = JSONObject.parseObject(data); + } + } + if (json != null) { + body = json.toJSONString(); + } + } + log.info("------------------- body = " + body + "------------------------"); + cachedContent.reset(); + cachedContent.write( body.getBytes(), 0, body.getBytes().length); + + } + } + } else { + cachedContent = new FastByteArrayOutputStream(); + } + } + + @Override + public int getContentLength() { + if (null != cachedContent) { + return cachedContent.size(); + } + return super.getContentLength(); + } + + public byte[] getByteArrayBody() { + return cachedContent.toByteArray(); + } + + public String getBody() { + String body = null; + if (cachedContent != null && cachedContent.size() > 0) { + body = new String(cachedContent.toByteArray()); + } + return body; + } + + public String getSortBody() { + return JSONObject.toJSONString(this.getBody(TreeMap.class)); + } + + public T getBody(Class type) { + return cn.hutool.json.JSONUtil.toBean(this.getBody(), type); + } + + //这个方法为获取前端给后端用于加密aeskey的rsa公钥 + public String getJSPublicKey(){ + return JSPublicKey; + } + @Override + public BufferedReader getReader() throws IOException { + return new BufferedReader(new InputStreamReader(getInputStream())); + } + + @Override + public ServletInputStream getInputStream() throws IOException { + if (this.getContentLength() < 1) { + return super.getInputStream(); + } + return new ResettableServletInputStream(new ByteArrayInputStream(cachedContent.toByteArray())); + } + + private class ResettableServletInputStream extends ServletInputStream { + + private final InputStream sourceStream; + + private boolean finished = false; + + + /** + * Create a DelegatingServletInputStream for the given source stream. + * + * @param sourceStream the source stream (never {@code null}) + */ + public ResettableServletInputStream(InputStream sourceStream) { + Assert.notNull(sourceStream, "Source InputStream must not be null"); + this.sourceStream = sourceStream; + } + + /** + * Return the underlying source stream (never {@code null}). + */ + public final InputStream getSourceStream() { + return this.sourceStream; + } + + + @Override + public int read() throws IOException { + int data = this.sourceStream.read(); + if (data == -1) { + this.finished = true; + } + return data; + } + + @Override + public int available() throws IOException { + return this.sourceStream.available(); + } + + @Override + public void close() throws IOException { + super.close(); + this.sourceStream.close(); + } + + @Override + public boolean isFinished() { + return finished; + } + + @Override + public boolean isReady() { + return true; + } + + @Override + public void setReadListener(ReadListener readListener) { + + } + } + + + +} + diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java new file mode 100644 index 0000000..10f6eed --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java @@ -0,0 +1,114 @@ +package com.schisandra.auth.application.wrapper; + +import cn.hutool.core.util.StrUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.MediaType; + +import javax.servlet.ServletOutputStream; +import javax.servlet.WriteListener; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletResponseWrapper; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintWriter; +/** * 返回值输出代理类 + * @ClassName ResponseWrapper + * @Description TODO + * @Author L + * @Date 2024/1/31 18:58 + */ + +@Slf4j +public class ResponseWrapper extends HttpServletResponseWrapper { + ByteArrayOutputStream _stream = new ByteArrayOutputStream(); + PrintWriter _pw = new PrintWriter(_stream); + + public ResponseWrapper(HttpServletResponse resp) throws IOException { + super(resp); + } + + /** + * 覆盖getWriter()方法,将字符流缓冲到本地 + */ + @Override + public PrintWriter getWriter() throws IOException { + return _pw; + } + + /** + * 覆盖getOutputStream()方法,将字节流缓冲到本地 + */ + @Override + public ServletOutputStream getOutputStream() throws IOException { + return new ServletOutputStream() { + @Override + public boolean isReady() { + return false; + } + + @Override + public void setWriteListener(WriteListener writeListener) { + + } + + @Override + public void write(int b) throws IOException { + _stream.write(b); + } + }; + } + + /** + * 把缓冲区内容写入输出流后关闭 + * + * @author xxj + */ + public void flush() { + try { + _pw.flush(); + _pw.close(); + _stream.flush(); + _stream.close(); + } catch (IOException e) { + log.error("", e); + } + } + + /** + * 获取字节流 + * + * @return + */ + public ByteArrayOutputStream getByteArrayOutputStream() { + return _stream; + } + + /** + * 将换出区内容转为文本输出 + * + * @return + */ + public String getTextContent() { + flush(); + return _stream.toString(); + } + + public static boolean isTextContentType(String contentType) { + boolean flag = false; + if (StrUtil.isBlank(contentType)) { + return false; + } else { + flag = StrUtil.startWithIgnoreCase(contentType, "text"); + if (!flag) { + flag = isJsonContentType(contentType); + } + } + return flag; + } + + public static boolean isJsonContentType(String contentType) { + return !StrUtil.isBlank(contentType) + && (StrUtil.containsIgnoreCase(contentType, "application/problem+json") + || StrUtil.containsIgnoreCase(contentType, MediaType.APPLICATION_JSON_VALUE)); + } +} diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml index 86846ad..13a1cf4 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml @@ -100,5 +100,18 @@ sms4j-Email-core 3.2.1 + + + org.apache.directory.studio + org.apache.commons.codec + 1.8 + + + + cn.hutool + hutool-extra + 5.8.27 + + diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/entity/ApiEncryptRes.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/entity/ApiEncryptRes.java new file mode 100644 index 0000000..9ba8785 --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/entity/ApiEncryptRes.java @@ -0,0 +1,19 @@ +package com.schisandra.auth.common.entity; + +import lombok.Data; + +/** + * @Classname ApiEncryptRes + * @BelongsProject: schisandra-cloud-storage + * @BelongsPackage: com.schisandra.auth.common.entity + * @Author: landaiqing + * @CreateTime: 2024-04-28 12:01 + * @Description: TODO + * @Version: 1.0 + */ +@Data +public class ApiEncryptRes { + private String aesKeyByRsa; + private String data; + private String frontPublicKey; +} diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/AESUtils.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/AESUtils.java new file mode 100644 index 0000000..e5bd78c --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/AESUtils.java @@ -0,0 +1,110 @@ +package com.schisandra.auth.common.utils; + +import org.apache.commons.codec.binary.Base64; + +import javax.crypto.Cipher; +import javax.crypto.spec.SecretKeySpec; +import java.nio.charset.StandardCharsets; +import java.security.SecureRandom; +import java.util.Random; + +/** + * @ClassName AESUtils 一定要选择16位密钥长度,也就是KEY_LENGTH=16*8,36的话就需要修改环境的jar包。 + * @Description TODO + * @Author L + * @Date 2024/1/26 17:27 + */ +public class AESUtils { + /** + * 加密算法AES + */ + private static final String KEY_ALGORITHM = "AES"; + + /** + * key的长度,Wrong key size: must be equal to 128, 192 or 256 + * 传入时需要16、24、36 + */ + private static final int KEY_LENGTH = 16 * 8; + + /** + * 算法名称/加密模式/数据填充方式 + * 默认:AES/ECB/PKCS5Padding + */ + private static final String ALGORITHMS = "AES/ECB/PKCS5Padding"; + + /** + * 后端AES的key,由静态代码块赋值 + */ + public static String key; + + + static { + key = getKey(); + } + + /** + * 获取key + */ + public static String getKey() { + int length = KEY_LENGTH / 8; + StringBuilder uid = new StringBuilder(length); + //产生32位的强随机数 + Random rd = new SecureRandom(); + for (int i = 0; i < length; i++) { + //产生0-2的3位随机数 + switch (rd.nextInt(3)) { + case 0: + //0-9的随机数 + uid.append(rd.nextInt(10)); + break; + case 1: + //ASCII在65-90之间为大写,获取大写随机 + uid.append((char) (rd.nextInt(26) + 65)); + break; + case 2: + //ASCII在97-122之间为小写,获取小写随机 + uid.append((char) (rd.nextInt(26) + 97)); + break; + default: + break; + } + } + return uid.toString(); + } + + /** + * AES 加密 + * + * @param content 加密的字符串 + * @param encryptKey key值 + */ + public static String encrypt(String content, String encryptKey) throws Exception { + //设置Cipher对象 + Cipher cipher = Cipher.getInstance(ALGORITHMS); + cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), KEY_ALGORITHM)); + + //调用doFinal + // 转base64 + return Base64.encodeBase64String(cipher.doFinal(content.getBytes(StandardCharsets.UTF_8))); + + } + + /** + * AES 解密 + * + * @param encryptStr 解密的字符串 + * @param decryptKey 解密的key值 + */ + public static String decrypt(String encryptStr, String decryptKey) throws Exception { + //base64格式的key字符串转byte + byte[] decodeBase64 = Base64.decodeBase64(encryptStr); + + + //设置Cipher对象 + Cipher cipher = Cipher.getInstance(ALGORITHMS); + cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), KEY_ALGORITHM)); + //调用doFinal解密 + return new String(cipher.doFinal(decodeBase64)); + + } +} diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/ApiSecurityUtils.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/ApiSecurityUtils.java new file mode 100644 index 0000000..230bc69 --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/ApiSecurityUtils.java @@ -0,0 +1,44 @@ +package com.schisandra.auth.common.utils; + +import com.schisandra.auth.common.entity.ApiEncryptRes; +import com.schisandra.auth.common.utils.AESUtils; +import com.schisandra.auth.common.utils.RSAUtils; +import org.apache.commons.codec.binary.Base64; +/** + * @ClassName ApiSecurityUtils + * @Description TODO + * @Author L + * @Date 2024/1/26 17:39 + */ +public class ApiSecurityUtils { + /** + * + * @param aesKeyByRsa 经过rsa加密的aeskey + * @param decryptStr 经过aes加密的数据 + * @return 解密后的数据 + */ + public static String decrypt(String aesKeyByRsa,String decryptStr,String privateKey) throws Exception { + byte[] bytes = RSAUtils.decryptByPrivateKey(Base64.decodeBase64(aesKeyByRsa), privateKey); + String aesKey = new String(bytes); + return AESUtils.decrypt(decryptStr, aesKey); + } + + /** + * + * @param encryptStr 要加密的数据 + * @param frontPublicKey 前端公钥 + * @return 加密后的数据 + */ + public static ApiEncryptRes encrypt(String encryptStr, String frontPublicKey) throws Exception { + String aesKey = AESUtils.getKey(); + String data = AESUtils.encrypt(encryptStr, aesKey); + ApiEncryptRes apiEncryptRes = new ApiEncryptRes(); + String aesKeyByRsa = Base64.encodeBase64String(RSAUtils.encryptByPublicKey(aesKey.getBytes(), frontPublicKey)); + apiEncryptRes.setAesKeyByRsa(aesKeyByRsa); + apiEncryptRes.setData(data); + return apiEncryptRes; + } + +} + + diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/MD5Util.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/MD5Util.java new file mode 100644 index 0000000..9a21050 --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/MD5Util.java @@ -0,0 +1,61 @@ +package com.schisandra.auth.common.utils; + +import java.security.MessageDigest; + +public class MD5Util { + //十六进制下数字到字符的映射数组 + private final static String[] hexDigits = {"0", "1", "2", "3", "4", + "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; + + + /** + * 把inputString加密 + */ + public static String md5(String inputString) { + return encodeByMD5(inputString); + } + /** + * 对字符串进行MD5加密 + */ + private static String encodeByMD5(String originString) { + if (originString != null) { + try { + //创建具有指定算法名称的信息摘要 + MessageDigest md = MessageDigest.getInstance("MD5"); + //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算 + byte[] results = md.digest(originString.getBytes("utf-8")); + //将得到的字节数组变成字符串返回 + String resultString = byteArrayToHexString(results); + return resultString.toUpperCase(); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + return null; + } + /** + * 转换字节数组为十六进制字符串 + * + * @param + * @return 十六进制字符串 + */ + private static String byteArrayToHexString(byte[] b) { + StringBuffer resultSb = new StringBuffer(); + for (int i = 0; i < b.length; i++) { + resultSb.append(byteToHexString(b[i])); + } + return resultSb.toString(); + } + + private static String byteToHexString(byte b) { + int n = b; + if (n < 0) { + n += 256; + } + int d1 = n / 16; + int d2 = n % 16; + return hexDigits[d1] + hexDigits[d2]; + } + +} + diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/RSAUtils.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/RSAUtils.java new file mode 100644 index 0000000..acdf56c --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/RSAUtils.java @@ -0,0 +1,171 @@ +package com.schisandra.auth.common.utils; + +import org.apache.commons.codec.binary.Base64; +import javax.crypto.Cipher; +import java.io.ByteArrayOutputStream; +import java.security.Key; +import java.security.KeyFactory; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.interfaces.RSAPrivateKey; +import java.security.interfaces.RSAPublicKey; +import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.X509EncodedKeySpec; +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * @ClassName RSAUtils + * @Description TODO + * @Author L + * @Date 2024/1/26 17:28 + */ +public class RSAUtils { + + /** + * 加密算法RSA + */ + private static final String KEY_ALGORITHM = "RSA"; + + /** + * 算法名称/加密模式/数据填充方式 + * 默认:RSA/ECB/PKCS1Padding + */ + private static final String ALGORITHMS = "RSA/ECB/PKCS1Padding"; + + /** + * RSA最大加密明文大小 + */ + private static final int MAX_ENCRYPT_BLOCK = 245; + + /** + * RSA最大解密密文大小 + */ + private static final int MAX_DECRYPT_BLOCK = 256; + + /** + * RSA 位数 如果采用2048 上面最大加密和最大解密则须填写: 245 256 + */ + private static final int INITIALIZE_LENGTH = 2048; + + /** + * 后端RSA的密钥对(公钥和私钥)Map,由静态代码块赋值 + */ + private static final Map map = new LinkedHashMap<>(2); + + /** + * 生成密钥对(公钥和私钥) + */ + + public static Map genKeyPair() throws Exception { + KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM); + keyPairGen.initialize(INITIALIZE_LENGTH); + KeyPair keyPair = keyPairGen.generateKeyPair(); + // 获取公钥 + RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); + // 获取私钥 + RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); + // 得到公钥字符串 + String publicKeyString = Base64.encodeBase64String(publicKey.getEncoded()); + // 得到私钥字符串 + String privateKeyString = Base64.encodeBase64String((privateKey.getEncoded())); + map.put("publicKey",publicKeyString); + map.put("privateKey",privateKeyString); + return map; + } + public static String getPrivateKey(){ + return map.get("privateKey"); + } + public static String getPublicKey(){ + return map.get("publicKey"); + } + /** + * RSA私钥解密 + * @param data BASE64编码过的密文 + * @param privateKey 私钥(BASE64编码) + * @return utf-8编码的明文 + */ + public static byte[] decryptByPrivateKey(byte[] data, String privateKey) throws Exception { + //base64格式的key字符串转Key对象 + Key privateK = KeyFactory.getInstance(KEY_ALGORITHM).generatePrivate(new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKey))); + Cipher cipher = Cipher.getInstance(ALGORITHMS); + cipher.init(Cipher.DECRYPT_MODE, privateK); + + //分段进行解密操作 + return encryptAndDecryptOfSubsection(data, cipher, MAX_DECRYPT_BLOCK); + } + + /** + * RSA公钥加密 + * @param data BASE64编码过的密文 + * @param publicKey 公钥(BASE64编码) + * @return utf-8编码的明文 + */ + public static byte[] encryptByPublicKey(byte[] data, String publicKey) throws Exception { + //base64格式的key字符串转Key对象 + Key publicK = KeyFactory.getInstance(KEY_ALGORITHM).generatePublic(new X509EncodedKeySpec(Base64.decodeBase64(publicKey))); + Cipher cipher = Cipher.getInstance(ALGORITHMS); + cipher.init(Cipher.ENCRYPT_MODE, publicK); + //分段进行加密操作 + return encryptAndDecryptOfSubsection(data, cipher, MAX_ENCRYPT_BLOCK); + } + + /** + * RSA公钥解密 + * @param data BASE64编码过的密文 + * @param publicKey RSA公钥 + * @return utf-8编码的明文 + */ + public static byte[] pubKeyDec(byte[] data, String publicKey) throws Exception { + //base64格式的key字符串转Key对象 + Key privateK = KeyFactory.getInstance(KEY_ALGORITHM).generatePublic(new X509EncodedKeySpec(Base64.decodeBase64(publicKey))); + Cipher cipher = Cipher.getInstance(ALGORITHMS); + cipher.init(Cipher.DECRYPT_MODE, privateK); + + //分段进行解密操作 + return encryptAndDecryptOfSubsection(data, cipher, MAX_DECRYPT_BLOCK); + } + + + /** + * RSA私钥加密 + * @param data 待加密的明文 + * @param privateKey RSA私钥 + * @return 经BASE64编码后的密文 + */ + public static byte[] privKeyEnc(byte[] data, String privateKey) throws Exception { + + //base64格式的key字符串转Key对象 + Key publicK = KeyFactory.getInstance(KEY_ALGORITHM).generatePrivate(new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKey))); + Cipher cipher = Cipher.getInstance(ALGORITHMS); + cipher.init(Cipher.ENCRYPT_MODE, publicK); + + //分段进行加密操作 + return encryptAndDecryptOfSubsection(data, cipher, MAX_ENCRYPT_BLOCK); + } + + /** + * 分段进行加密、解密操作 + */ + private static byte[] encryptAndDecryptOfSubsection(byte[] data, Cipher cipher, int encryptBlock) throws Exception { + int inputLen = data.length; + ByteArrayOutputStream out = new ByteArrayOutputStream(); + int offSet = 0; + byte[] cache; + int i = 0; + // 对数据分段加密 + while (inputLen - offSet > 0) { + if (inputLen - offSet > encryptBlock) { + cache = cipher.doFinal(data, offSet, encryptBlock); + } else { + cache = cipher.doFinal(data, offSet, inputLen - offSet); + } + out.write(cache, 0, cache.length); + i++; + offSet = i * encryptBlock; + } + out.close(); + return out.toByteArray(); + } + +} From da0dc7d1a6ee60b10864cd3a3a04c349a722f12a Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Mon, 29 Apr 2024 00:13:18 +0800 Subject: [PATCH 02/28] feat: remove aes/rsa encrypt --- .../controller/EncryptController.java | 51 ---- .../application/filter/EncryptApiFilter.java | 100 ------- .../wrapper/EncryptRequestWrapper.java | 257 ------------------ .../application/wrapper/ResponseWrapper.java | 114 -------- 4 files changed, 522 deletions(-) delete mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java delete mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java delete mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java delete mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java deleted file mode 100644 index 45d724f..0000000 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.schisandra.auth.application.controller; - -import com.schisandra.auth.common.entity.Result; -import com.schisandra.auth.common.redis.RedisUtil; -import com.schisandra.auth.common.utils.MD5Util; -import com.schisandra.auth.common.utils.RSAUtils; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.util.Map; - -/** - * @ClassName EncryptController - * @Description TODO - * @Author L - * @Date 2024/1/29 9:18 - */ -@RestController -@RequestMapping("/encrypt") -@Slf4j -public class EncryptController { - @Resource - private RedisUtil redisUtil; - private String authPublicKeyPrefix = "auth.publicKey"; - private String authPrivateKeyPrefix = "auth.privateKey"; - - @GetMapping("/getPublicKey") - public Result getPublicKey() throws Exception { - //获取当前登陆账号对应的token,这行代码就不贴了。 - String token="12345"; - String publicKey=""; - if (StringUtils.isNotBlank(token)) { - Map stringStringMap = RSAUtils.genKeyPair(); - publicKey = stringStringMap.get("publicKey"); - String privateKey = stringStringMap.get("privateKey"); - String md5Token = MD5Util.md5(token); - //这个地方的存放时间根据你的token存放时间走 - redisUtil.set(md5Token + "publicKey", publicKey); - redisUtil.set(md5Token + "privateKey", privateKey); - return Result.ok(publicKey); - } - return Result.ok(publicKey); - } - -} - diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java deleted file mode 100644 index 8bcbb28..0000000 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.schisandra.auth.application.filter; - -import cn.hutool.core.util.StrUtil; -import cn.hutool.extra.servlet.ServletUtil; -import cn.hutool.json.JSONUtil; -import com.alibaba.fastjson.JSON; -import com.schisandra.auth.application.wrapper.EncryptRequestWrapper; -import com.schisandra.auth.application.wrapper.ResponseWrapper; -import com.schisandra.auth.common.entity.ApiEncryptRes; -import com.schisandra.auth.common.utils.ApiSecurityUtils; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.boot.web.servlet.filter.OrderedFilter; -import org.springframework.stereotype.Component; -import org.springframework.web.filter.OncePerRequestFilter; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.nio.charset.StandardCharsets; - -@Slf4j -@Component -public class EncryptApiFilter extends OncePerRequestFilter implements OrderedFilter { - public static final int DEFAULT_ORDER = Integer.MAX_VALUE; - - - @Override - protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { - String servletPath = request.getServletPath(); - - ResponseWrapper wrapper = new ResponseWrapper(response); - String requestContent = null; - - if (ServletUtil.isMultipart(request)) { - } else { - EncryptRequestWrapper encryptRequestWrapper = EncryptRequestWrapper.newOrGetMultiReadHttpServletRequest(request); - requestContent = encryptRequestWrapper.getBody(); - request = encryptRequestWrapper; - - } - log.debug("{}>>>{}", servletPath, requestContent); - - try { - filterChain.doFilter(request, wrapper); - } finally { - try { - process(request, wrapper, response); - } catch (Exception e) { - log.error("AesFilter error", e); - } - } - } - - @SneakyThrows - protected void process(HttpServletRequest request, ResponseWrapper responseWrapper, HttpServletResponse response) { - - String servletPath = request.getRequestURI(); - String isencrypt = request.getHeader("Isencrypt"); - ServletOutputStream out = response.getOutputStream(); - if (ResponseWrapper.isJsonContentType(responseWrapper.getContentType())) { - String responseContent = responseWrapper.getTextContent(); - if (StrUtil.isNotEmpty(responseContent)&&StringUtils.isNotBlank(isencrypt)) { - String JSPublicKey = ((EncryptRequestWrapper)request).getJSPublicKey(); - if (StringUtils.isNotBlank(JSPublicKey)) { - ApiEncryptRes apiEncryptRes = ApiSecurityUtils.encrypt(JSON.toJSONString(responseContent), JSPublicKey); - responseContent = JSONUtil.toJsonStr(apiEncryptRes); - } - log.info("{}<<<{}", servletPath, responseContent); - byte[] bytes = responseContent.getBytes(StandardCharsets.UTF_8); - response.setContentLength(bytes.length); - out.write(bytes); - out.flush(); - out.close(); - } else { - responseWrapper.getByteArrayOutputStream().writeTo(out); - out.flush(); - out.close(); - } - } else { - responseWrapper.getByteArrayOutputStream().writeTo(out); - out.flush(); - out.close(); - } - } - - @Override - public void afterPropertiesSet() throws ServletException { - super.afterPropertiesSet(); - } - - @Override - public int getOrder() { - return DEFAULT_ORDER; - } -} diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java deleted file mode 100644 index 13fc264..0000000 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java +++ /dev/null @@ -1,257 +0,0 @@ -package com.schisandra.auth.application.wrapper; - -import cn.hutool.core.convert.Convert; -import com.alibaba.fastjson.JSONObject; -import com.schisandra.auth.common.redis.RedisUtil; -import com.schisandra.auth.common.utils.ApiSecurityUtils; -import com.schisandra.auth.common.utils.MD5Util; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; - -import javax.servlet.ReadListener; -import javax.servlet.ServletInputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletRequestWrapper; -import java.io.*; - - -import cn.hutool.core.io.FastByteArrayOutputStream; -import cn.hutool.core.io.IoUtil; -import cn.hutool.core.lang.Assert; -import cn.hutool.http.ContentType; - - -import lombok.SneakyThrows; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; -import org.springframework.web.multipart.support.StandardServletMultipartResolver; -import org.springframework.web.util.WebUtils; - - -import java.util.TreeMap; - -/** - * @ClassName requestWrapper - * @Description TODO - * @Author landaiqing - * @Date 2024/1/31 17:58 - */ - -/** - * 确保request可以多次读取 - */ - -@Slf4j -public class EncryptRequestWrapper extends HttpServletRequestWrapper { - - - - //2024-02-02由于在过滤器中无法直接通过Autowired获取Bean,因此需要通过spring上下文来获取IOC管理的实体类 -// @Autowired -// private RedisUtil redisUtil; - - protected FastByteArrayOutputStream cachedContent; - protected String JSPublicKey; - protected EncryptRequestWrapper(HttpServletRequest request ) { - - super(request); - RedisUtil redisUtils =getBean(RedisUtil.class, request); - this.copyBody(redisUtils); - - - } - - /** - * - * 此处主要是用于读取 RedisUtil - * @param clazz - * @param request - * @param - * @return - */ - public T getBean(Class clazz, HttpServletRequest request){ - WebApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()); - return applicationContext.getBean(clazz); - } - - public static EncryptRequestWrapper newOrGetMultiReadHttpServletRequest(HttpServletRequest request) { - EncryptRequestWrapper multiReadHttpServletRequest = getMultiReadHttpServletRequest(request); - if (null != multiReadHttpServletRequest) { - return multiReadHttpServletRequest; - } else { - String contentType = request.getContentType(); - if (contentType != null && contentType.contains(ContentType.MULTIPART.getValue())) { - // 将转化后的 request 放入过滤链中 - request = new StandardServletMultipartResolver().resolveMultipart(request); - } - return new EncryptRequestWrapper(request); - } - } - - public static EncryptRequestWrapper getMultiReadHttpServletRequest(HttpServletRequest request) { - EncryptRequestWrapper nativeRequest = WebUtils.getNativeRequest(request, EncryptRequestWrapper.class); - if (null != nativeRequest) { - return nativeRequest; - } else if (request instanceof EncryptRequestWrapper) { - return (EncryptRequestWrapper) request; - } else { - return null; - } - } - //重新读取请求,因为request只可以被读取一次,需要重新设置为可多次读取 - @SneakyThrows - protected void copyBody(RedisUtil redisUtils) { - int length = this.getContentLength(); - if (length > 0) { - cachedContent = IoUtil.read(getRequest().getInputStream()); - if (StringUtils.isNotBlank(this.getHeader("Isencrypt"))&&StringUtils.isNotBlank(this.getHeader("X-Access-Token"))) { - String body = new String(cachedContent.toByteArray()); - log.info("------------------- body = " + body + "------------------------"); - if (StringUtils.isNotBlank(body)) { - JSONObject jsonBody = JSONObject.parseObject(body); - if(null != jsonBody){ - String dataEncrypt = jsonBody.getString("data"); - String aeskey = jsonBody.getString("aeskey"); - JSPublicKey = jsonBody.getString("frontPublicKey"); - String data; - JSONObject json = null; - log.info("------------------- dataEncrypt = " + dataEncrypt + "------------------------"); - log.info("------------------- aesKey = " + aeskey + "------------------------"); - String token = this.getHeader("X-Access-Token"); - String md5Token = MD5Util.md5(token); - String privateKey = Convert.toStr(redisUtils.get(md5Token + "privateKey")); - data = ApiSecurityUtils.decrypt(aeskey, dataEncrypt,privateKey); - // 如果数据不为空就编译 - if (StringUtils.isNotBlank(data)) { - //如果参数为空前端传回undefined - if ("undefined".equalsIgnoreCase(data)) { - json = new JSONObject(); - } else { - json = JSONObject.parseObject(data); - } - } - if (json != null) { - body = json.toJSONString(); - } - } - log.info("------------------- body = " + body + "------------------------"); - cachedContent.reset(); - cachedContent.write( body.getBytes(), 0, body.getBytes().length); - - } - } - } else { - cachedContent = new FastByteArrayOutputStream(); - } - } - - @Override - public int getContentLength() { - if (null != cachedContent) { - return cachedContent.size(); - } - return super.getContentLength(); - } - - public byte[] getByteArrayBody() { - return cachedContent.toByteArray(); - } - - public String getBody() { - String body = null; - if (cachedContent != null && cachedContent.size() > 0) { - body = new String(cachedContent.toByteArray()); - } - return body; - } - - public String getSortBody() { - return JSONObject.toJSONString(this.getBody(TreeMap.class)); - } - - public T getBody(Class type) { - return cn.hutool.json.JSONUtil.toBean(this.getBody(), type); - } - - //这个方法为获取前端给后端用于加密aeskey的rsa公钥 - public String getJSPublicKey(){ - return JSPublicKey; - } - @Override - public BufferedReader getReader() throws IOException { - return new BufferedReader(new InputStreamReader(getInputStream())); - } - - @Override - public ServletInputStream getInputStream() throws IOException { - if (this.getContentLength() < 1) { - return super.getInputStream(); - } - return new ResettableServletInputStream(new ByteArrayInputStream(cachedContent.toByteArray())); - } - - private class ResettableServletInputStream extends ServletInputStream { - - private final InputStream sourceStream; - - private boolean finished = false; - - - /** - * Create a DelegatingServletInputStream for the given source stream. - * - * @param sourceStream the source stream (never {@code null}) - */ - public ResettableServletInputStream(InputStream sourceStream) { - Assert.notNull(sourceStream, "Source InputStream must not be null"); - this.sourceStream = sourceStream; - } - - /** - * Return the underlying source stream (never {@code null}). - */ - public final InputStream getSourceStream() { - return this.sourceStream; - } - - - @Override - public int read() throws IOException { - int data = this.sourceStream.read(); - if (data == -1) { - this.finished = true; - } - return data; - } - - @Override - public int available() throws IOException { - return this.sourceStream.available(); - } - - @Override - public void close() throws IOException { - super.close(); - this.sourceStream.close(); - } - - @Override - public boolean isFinished() { - return finished; - } - - @Override - public boolean isReady() { - return true; - } - - @Override - public void setReadListener(ReadListener readListener) { - - } - } - - - -} - diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java deleted file mode 100644 index 10f6eed..0000000 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.schisandra.auth.application.wrapper; - -import cn.hutool.core.util.StrUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.http.MediaType; - -import javax.servlet.ServletOutputStream; -import javax.servlet.WriteListener; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpServletResponseWrapper; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintWriter; -/** * 返回值输出代理类 - * @ClassName ResponseWrapper - * @Description TODO - * @Author L - * @Date 2024/1/31 18:58 - */ - -@Slf4j -public class ResponseWrapper extends HttpServletResponseWrapper { - ByteArrayOutputStream _stream = new ByteArrayOutputStream(); - PrintWriter _pw = new PrintWriter(_stream); - - public ResponseWrapper(HttpServletResponse resp) throws IOException { - super(resp); - } - - /** - * 覆盖getWriter()方法,将字符流缓冲到本地 - */ - @Override - public PrintWriter getWriter() throws IOException { - return _pw; - } - - /** - * 覆盖getOutputStream()方法,将字节流缓冲到本地 - */ - @Override - public ServletOutputStream getOutputStream() throws IOException { - return new ServletOutputStream() { - @Override - public boolean isReady() { - return false; - } - - @Override - public void setWriteListener(WriteListener writeListener) { - - } - - @Override - public void write(int b) throws IOException { - _stream.write(b); - } - }; - } - - /** - * 把缓冲区内容写入输出流后关闭 - * - * @author xxj - */ - public void flush() { - try { - _pw.flush(); - _pw.close(); - _stream.flush(); - _stream.close(); - } catch (IOException e) { - log.error("", e); - } - } - - /** - * 获取字节流 - * - * @return - */ - public ByteArrayOutputStream getByteArrayOutputStream() { - return _stream; - } - - /** - * 将换出区内容转为文本输出 - * - * @return - */ - public String getTextContent() { - flush(); - return _stream.toString(); - } - - public static boolean isTextContentType(String contentType) { - boolean flag = false; - if (StrUtil.isBlank(contentType)) { - return false; - } else { - flag = StrUtil.startWithIgnoreCase(contentType, "text"); - if (!flag) { - flag = isJsonContentType(contentType); - } - } - return flag; - } - - public static boolean isJsonContentType(String contentType) { - return !StrUtil.isBlank(contentType) - && (StrUtil.containsIgnoreCase(contentType, "application/problem+json") - || StrUtil.containsIgnoreCase(contentType, MediaType.APPLICATION_JSON_VALUE)); - } -} From 0641192ffd83a11014272d4ed3f99262831d86f6 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Mon, 29 Apr 2024 23:23:32 +0800 Subject: [PATCH 03/28] feat: add sql file --- .../controller/EncryptController.java | 52 ++++ .../application/filter/EncryptApiFilter.java | 100 +++++++ .../wrapper/EncryptRequestWrapper.java | 257 ++++++++++++++++++ .../application/wrapper/ResponseWrapper.java | 114 ++++++++ .../sql/schisandra-cloud-storage.sql | 144 ++++++++++ .../src/main/resources/application.yml | 1 - 6 files changed, 667 insertions(+), 1 deletion(-) create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-infra/src/main/resources/sql/schisandra-cloud-storage.sql diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java new file mode 100644 index 0000000..ccfe8ce --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java @@ -0,0 +1,52 @@ +package com.schisandra.auth.application.controller; + +import com.schisandra.auth.common.entity.Result; +import com.schisandra.auth.common.redis.RedisUtil; +import com.schisandra.auth.common.utils.MD5Util; +import com.schisandra.auth.common.utils.RSAUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.Map; + +/** + * @ClassName EncryptController + * @Description TODO + * @Author L + * @Date 2024/1/29 9:18 + */ +@RestController +@RequestMapping("/encrypt") +@Slf4j +public class EncryptController { + @Resource + private RedisUtil redisUtil; + private String authPublicKeyPrefix = "auth.publicKey"; + private String authPrivateKeyPrefix = "auth.privateKey"; + + @PostMapping("/getPublicKey") + public Result getPublicKey() throws Exception { + //获取当前登陆账号对应的token,这行代码就不贴了。 + String token="12345"; + String publicKey=""; + if (StringUtils.isNotBlank(token)) { + Map stringStringMap = RSAUtils.genKeyPair(); + publicKey = stringStringMap.get("publicKey"); + String privateKey = stringStringMap.get("privateKey"); + String md5Token = MD5Util.md5(token); + //这个地方的存放时间根据你的token存放时间走 + redisUtil.set(md5Token + "publicKey", publicKey); + redisUtil.set(md5Token + "privateKey", privateKey); + return Result.ok(publicKey); + } + return Result.ok(publicKey); + } + +} + diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java new file mode 100644 index 0000000..8bcbb28 --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java @@ -0,0 +1,100 @@ +package com.schisandra.auth.application.filter; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.servlet.ServletUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.schisandra.auth.application.wrapper.EncryptRequestWrapper; +import com.schisandra.auth.application.wrapper.ResponseWrapper; +import com.schisandra.auth.common.entity.ApiEncryptRes; +import com.schisandra.auth.common.utils.ApiSecurityUtils; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.boot.web.servlet.filter.OrderedFilter; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +@Slf4j +@Component +public class EncryptApiFilter extends OncePerRequestFilter implements OrderedFilter { + public static final int DEFAULT_ORDER = Integer.MAX_VALUE; + + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + String servletPath = request.getServletPath(); + + ResponseWrapper wrapper = new ResponseWrapper(response); + String requestContent = null; + + if (ServletUtil.isMultipart(request)) { + } else { + EncryptRequestWrapper encryptRequestWrapper = EncryptRequestWrapper.newOrGetMultiReadHttpServletRequest(request); + requestContent = encryptRequestWrapper.getBody(); + request = encryptRequestWrapper; + + } + log.debug("{}>>>{}", servletPath, requestContent); + + try { + filterChain.doFilter(request, wrapper); + } finally { + try { + process(request, wrapper, response); + } catch (Exception e) { + log.error("AesFilter error", e); + } + } + } + + @SneakyThrows + protected void process(HttpServletRequest request, ResponseWrapper responseWrapper, HttpServletResponse response) { + + String servletPath = request.getRequestURI(); + String isencrypt = request.getHeader("Isencrypt"); + ServletOutputStream out = response.getOutputStream(); + if (ResponseWrapper.isJsonContentType(responseWrapper.getContentType())) { + String responseContent = responseWrapper.getTextContent(); + if (StrUtil.isNotEmpty(responseContent)&&StringUtils.isNotBlank(isencrypt)) { + String JSPublicKey = ((EncryptRequestWrapper)request).getJSPublicKey(); + if (StringUtils.isNotBlank(JSPublicKey)) { + ApiEncryptRes apiEncryptRes = ApiSecurityUtils.encrypt(JSON.toJSONString(responseContent), JSPublicKey); + responseContent = JSONUtil.toJsonStr(apiEncryptRes); + } + log.info("{}<<<{}", servletPath, responseContent); + byte[] bytes = responseContent.getBytes(StandardCharsets.UTF_8); + response.setContentLength(bytes.length); + out.write(bytes); + out.flush(); + out.close(); + } else { + responseWrapper.getByteArrayOutputStream().writeTo(out); + out.flush(); + out.close(); + } + } else { + responseWrapper.getByteArrayOutputStream().writeTo(out); + out.flush(); + out.close(); + } + } + + @Override + public void afterPropertiesSet() throws ServletException { + super.afterPropertiesSet(); + } + + @Override + public int getOrder() { + return DEFAULT_ORDER; + } +} diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java new file mode 100644 index 0000000..89c256a --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java @@ -0,0 +1,257 @@ +package com.schisandra.auth.application.wrapper; + +import cn.hutool.core.convert.Convert; +import com.alibaba.fastjson.JSONObject; +import com.schisandra.auth.common.redis.RedisUtil; +import com.schisandra.auth.common.utils.ApiSecurityUtils; +import com.schisandra.auth.common.utils.MD5Util; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.ReadListener; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import java.io.*; + + +import cn.hutool.core.io.FastByteArrayOutputStream; +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.http.ContentType; + + +import lombok.SneakyThrows; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; +import org.springframework.web.multipart.support.StandardServletMultipartResolver; +import org.springframework.web.util.WebUtils; + + +import java.util.TreeMap; + +/** + * @ClassName requestWrapper + * @Description TODO + * @Author landaiqing + * @Date 2024/1/31 17:58 + */ + +/** + * 确保request可以多次读取 + */ + +@Slf4j +public class EncryptRequestWrapper extends HttpServletRequestWrapper { + + + + //2024-02-02由于在过滤器中无法直接通过Autowired获取Bean,因此需要通过spring上下文来获取IOC管理的实体类 +// @Autowired +// private RedisUtil redisUtil; + + protected FastByteArrayOutputStream cachedContent; + protected String JSPublicKey; + protected EncryptRequestWrapper(HttpServletRequest request ) { + + super(request); + RedisUtil redisUtils =getBean(RedisUtil.class, request); + this.copyBody(redisUtils); + + + } + + /** + * + * 此处主要是用于读取 RedisUtil + * @param clazz + * @param request + * @param + * @return + */ + public T getBean(Class clazz, HttpServletRequest request){ + WebApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()); + return applicationContext.getBean(clazz); + } + + public static EncryptRequestWrapper newOrGetMultiReadHttpServletRequest(HttpServletRequest request) { + EncryptRequestWrapper multiReadHttpServletRequest = getMultiReadHttpServletRequest(request); + if (null != multiReadHttpServletRequest) { + return multiReadHttpServletRequest; + } else { + String contentType = request.getContentType(); + if (contentType != null && contentType.contains(ContentType.MULTIPART.getValue())) { + // 将转化后的 request 放入过滤链中 + request = new StandardServletMultipartResolver().resolveMultipart(request); + } + return new EncryptRequestWrapper(request); + } + } + + public static EncryptRequestWrapper getMultiReadHttpServletRequest(HttpServletRequest request) { + EncryptRequestWrapper nativeRequest = WebUtils.getNativeRequest(request, EncryptRequestWrapper.class); + if (null != nativeRequest) { + return nativeRequest; + } else if (request instanceof EncryptRequestWrapper) { + return (EncryptRequestWrapper) request; + } else { + return null; + } + } + //重新读取请求,因为request只可以被读取一次,需要重新设置为可多次读取 + @SneakyThrows + protected void copyBody(RedisUtil redisUtils) { + int length = this.getContentLength(); + if (length > 0) { + cachedContent = IoUtil.read(getRequest().getInputStream()); + if (StringUtils.isNotBlank(this.getHeader("isEncrypt"))&&StringUtils.isNotBlank(this.getHeader("Authorization"))) { + String body = new String(cachedContent.toByteArray()); + log.info("------------------- body = " + body + "------------------------"); + if (StringUtils.isNotBlank(body)) { + JSONObject jsonBody = JSONObject.parseObject(body); + if(null != jsonBody){ + String dataEncrypt = jsonBody.getString("data"); + String aeskey = jsonBody.getString("aeskey"); + JSPublicKey = jsonBody.getString("frontPublicKey"); + String data; + JSONObject json = null; + log.info("------------------- dataEncrypt = " + dataEncrypt + "------------------------"); + log.info("------------------- aesKey = " + aeskey + "------------------------"); + String token = this.getHeader("Authorization"); + String md5Token = MD5Util.md5(token); + String privateKey = Convert.toStr(redisUtils.get(md5Token + "privateKey")); + data = ApiSecurityUtils.decrypt(aeskey, dataEncrypt,privateKey); + // 如果数据不为空就编译 + if (StringUtils.isNotBlank(data)) { + //如果参数为空前端传回undefined + if ("undefined".equalsIgnoreCase(data)) { + json = new JSONObject(); + } else { + json = JSONObject.parseObject(data); + } + } + if (json != null) { + body = json.toJSONString(); + } + } + log.info("------------------- body = " + body + "------------------------"); + cachedContent.reset(); + cachedContent.write( body.getBytes(), 0, body.getBytes().length); + + } + } + } else { + cachedContent = new FastByteArrayOutputStream(); + } + } + + @Override + public int getContentLength() { + if (null != cachedContent) { + return cachedContent.size(); + } + return super.getContentLength(); + } + + public byte[] getByteArrayBody() { + return cachedContent.toByteArray(); + } + + public String getBody() { + String body = null; + if (cachedContent != null && cachedContent.size() > 0) { + body = new String(cachedContent.toByteArray()); + } + return body; + } + + public String getSortBody() { + return JSONObject.toJSONString(this.getBody(TreeMap.class)); + } + + public T getBody(Class type) { + return cn.hutool.json.JSONUtil.toBean(this.getBody(), type); + } + + //这个方法为获取前端给后端用于加密aeskey的rsa公钥 + public String getJSPublicKey(){ + return JSPublicKey; + } + @Override + public BufferedReader getReader() throws IOException { + return new BufferedReader(new InputStreamReader(getInputStream())); + } + + @Override + public ServletInputStream getInputStream() throws IOException { + if (this.getContentLength() < 1) { + return super.getInputStream(); + } + return new ResettableServletInputStream(new ByteArrayInputStream(cachedContent.toByteArray())); + } + + private class ResettableServletInputStream extends ServletInputStream { + + private final InputStream sourceStream; + + private boolean finished = false; + + + /** + * Create a DelegatingServletInputStream for the given source stream. + * + * @param sourceStream the source stream (never {@code null}) + */ + public ResettableServletInputStream(InputStream sourceStream) { + Assert.notNull(sourceStream, "Source InputStream must not be null"); + this.sourceStream = sourceStream; + } + + /** + * Return the underlying source stream (never {@code null}). + */ + public final InputStream getSourceStream() { + return this.sourceStream; + } + + + @Override + public int read() throws IOException { + int data = this.sourceStream.read(); + if (data == -1) { + this.finished = true; + } + return data; + } + + @Override + public int available() throws IOException { + return this.sourceStream.available(); + } + + @Override + public void close() throws IOException { + super.close(); + this.sourceStream.close(); + } + + @Override + public boolean isFinished() { + return finished; + } + + @Override + public boolean isReady() { + return true; + } + + @Override + public void setReadListener(ReadListener readListener) { + + } + } + + + +} + diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java new file mode 100644 index 0000000..10f6eed --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java @@ -0,0 +1,114 @@ +package com.schisandra.auth.application.wrapper; + +import cn.hutool.core.util.StrUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.MediaType; + +import javax.servlet.ServletOutputStream; +import javax.servlet.WriteListener; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletResponseWrapper; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintWriter; +/** * 返回值输出代理类 + * @ClassName ResponseWrapper + * @Description TODO + * @Author L + * @Date 2024/1/31 18:58 + */ + +@Slf4j +public class ResponseWrapper extends HttpServletResponseWrapper { + ByteArrayOutputStream _stream = new ByteArrayOutputStream(); + PrintWriter _pw = new PrintWriter(_stream); + + public ResponseWrapper(HttpServletResponse resp) throws IOException { + super(resp); + } + + /** + * 覆盖getWriter()方法,将字符流缓冲到本地 + */ + @Override + public PrintWriter getWriter() throws IOException { + return _pw; + } + + /** + * 覆盖getOutputStream()方法,将字节流缓冲到本地 + */ + @Override + public ServletOutputStream getOutputStream() throws IOException { + return new ServletOutputStream() { + @Override + public boolean isReady() { + return false; + } + + @Override + public void setWriteListener(WriteListener writeListener) { + + } + + @Override + public void write(int b) throws IOException { + _stream.write(b); + } + }; + } + + /** + * 把缓冲区内容写入输出流后关闭 + * + * @author xxj + */ + public void flush() { + try { + _pw.flush(); + _pw.close(); + _stream.flush(); + _stream.close(); + } catch (IOException e) { + log.error("", e); + } + } + + /** + * 获取字节流 + * + * @return + */ + public ByteArrayOutputStream getByteArrayOutputStream() { + return _stream; + } + + /** + * 将换出区内容转为文本输出 + * + * @return + */ + public String getTextContent() { + flush(); + return _stream.toString(); + } + + public static boolean isTextContentType(String contentType) { + boolean flag = false; + if (StrUtil.isBlank(contentType)) { + return false; + } else { + flag = StrUtil.startWithIgnoreCase(contentType, "text"); + if (!flag) { + flag = isJsonContentType(contentType); + } + } + return flag; + } + + public static boolean isJsonContentType(String contentType) { + return !StrUtil.isBlank(contentType) + && (StrUtil.containsIgnoreCase(contentType, "application/problem+json") + || StrUtil.containsIgnoreCase(contentType, MediaType.APPLICATION_JSON_VALUE)); + } +} diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-infra/src/main/resources/sql/schisandra-cloud-storage.sql b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-infra/src/main/resources/sql/schisandra-cloud-storage.sql new file mode 100644 index 0000000..448a191 --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-infra/src/main/resources/sql/schisandra-cloud-storage.sql @@ -0,0 +1,144 @@ +/* + Navicat Premium Data Transfer + + Source Server : MySQL Cloud + Source Server Type : MySQL + Source Server Version : 50744 (5.7.44) + Source Host : 116.196.80.239:3306 + Source Schema : schisandra-cloud-storage + + Target Server Type : MySQL + Target Server Version : 50744 (5.7.44) + File Encoding : 65001 + + Date: 26/04/2024 01:28:16 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for schisandra_auth_permission +-- ---------------------------- +DROP TABLE IF EXISTS `schisandra_auth_permission`; +CREATE TABLE `schisandra_auth_permission` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `parent_id` bigint(20) NULL DEFAULT NULL, + `type` tinyint(4) NULL DEFAULT NULL, + `menu_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `status` tinyint(4) NULL DEFAULT NULL, + `show` tinyint(4) NULL DEFAULT NULL, + `icon` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `permission_key` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `created_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `created_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `is_deleted` int(11) NULL DEFAULT 0, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of schisandra_auth_permission +-- ---------------------------- +INSERT INTO `schisandra_auth_permission` VALUES (1, '普通用户', 0, 1, '1adiwd/awdw', 0, 0, 'httt://1.png', 'subject:add', NULL, NULL, NULL, NULL, 1); +INSERT INTO `schisandra_auth_permission` VALUES (2, '管理员', 0, 1, '1adiwd/awdw', 0, 0, 'httt://1.png', 'subject:add', NULL, NULL, NULL, NULL, 0); + +-- ---------------------------- +-- Table structure for schisandra_auth_role +-- ---------------------------- +DROP TABLE IF EXISTS `schisandra_auth_role`; +CREATE TABLE `schisandra_auth_role` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `role_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `role_key` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `created_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `created_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `is_deleted` int(11) NULL DEFAULT 0, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of schisandra_auth_role +-- ---------------------------- +INSERT INTO `schisandra_auth_role` VALUES (1, '普通用户', 'normal_user', NULL, NULL, NULL, NULL, 0); +INSERT INTO `schisandra_auth_role` VALUES (2, '管理员', 'admin', NULL, NULL, NULL, NULL, 0); +INSERT INTO `schisandra_auth_role` VALUES (3, '超级管理员', 'super_admin', NULL, NULL, NULL, NULL, 0); + +-- ---------------------------- +-- Table structure for schisandra_auth_role_permission +-- ---------------------------- +DROP TABLE IF EXISTS `schisandra_auth_role_permission`; +CREATE TABLE `schisandra_auth_role_permission` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `role_id` bigint(20) NULL DEFAULT NULL, + `permission_id` bigint(20) NULL DEFAULT NULL, + `created_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `created_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `is_deleted` int(11) NULL DEFAULT 0, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of schisandra_auth_role_permission +-- ---------------------------- +INSERT INTO `schisandra_auth_role_permission` VALUES (1, 2, 1, NULL, NULL, NULL, NULL, 0); +INSERT INTO `schisandra_auth_role_permission` VALUES (2, 3, 2, NULL, NULL, NULL, NULL, 0); +INSERT INTO `schisandra_auth_role_permission` VALUES (3, 1, 1, NULL, NULL, NULL, NULL, 0); + +-- ---------------------------- +-- Table structure for schisandra_auth_user +-- ---------------------------- +DROP TABLE IF EXISTS `schisandra_auth_user`; +CREATE TABLE `schisandra_auth_user` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `user_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `nick_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `email` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `phone` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `sex` tinyint(4) NULL DEFAULT NULL, + `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `status` tinyint(4) NULL DEFAULT NULL, + `introduce` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `ext_json` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `created_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `created_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `is_deleted` int(11) NULL DEFAULT 0, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of schisandra_auth_user +-- ---------------------------- +INSERT INTO `schisandra_auth_user` VALUES (8, 'oF9UX6c2GNEHUpoQZRTrkHTmLYHs', NULL, NULL, NULL, NULL, NULL, 'http://117.72.10.84:9000/user/icon/微信图片_20231203153718(1).png', 0, NULL, NULL, NULL, NULL, NULL, NULL, 0); +INSERT INTO `schisandra_auth_user` VALUES (9, '666', '666', '666', '555', '666', 1, '', 1, '', '', NULL, NULL, NULL, NULL, 1); + +-- ---------------------------- +-- Table structure for schisandra_auth_user_role +-- ---------------------------- +DROP TABLE IF EXISTS `schisandra_auth_user_role`; +CREATE TABLE `schisandra_auth_user_role` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `user_id` bigint(20) NULL DEFAULT NULL, + `role_id` bigint(20) NULL DEFAULT NULL, + `created_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `created_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `is_deleted` int(11) NULL DEFAULT 0, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of schisandra_auth_user_role +-- ---------------------------- + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml index 6ec5c39..a87e2be 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml @@ -103,4 +103,3 @@ sa-token: # #您的sdkAppId # sdk-app-id: 您的sdkAppId - From 32de8df4c90da29821fa3a589f82902c168a1726 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Tue, 30 Apr 2024 14:34:14 +0800 Subject: [PATCH 04/28] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/infra/basic/utils/DruidEncryptUtil.java | 2 +- .../src/main/resources/application.yml | 10 +++++----- .../src/main/resources/bootstrap.yml | 4 ++-- .../src/main/resources/application.yml | 2 +- .../src/main/resources/bootstrap.yml | 4 ++-- .../src/main/resources/application.yml | 2 +- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-infra/src/main/java/com/schisandra/auth/infra/basic/utils/DruidEncryptUtil.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-infra/src/main/java/com/schisandra/auth/infra/basic/utils/DruidEncryptUtil.java index cd823ba..bf4f79b 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-infra/src/main/java/com/schisandra/auth/infra/basic/utils/DruidEncryptUtil.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-infra/src/main/java/com/schisandra/auth/infra/basic/utils/DruidEncryptUtil.java @@ -44,7 +44,7 @@ public class DruidEncryptUtil { } public static void main(String[] args) throws Exception { - String encrypt = encrypt("$LDQ20020618xxx$"); + String encrypt = encrypt(""); System.out.println("encrypt:" + encrypt); } diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml index a87e2be..45abcf5 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml @@ -2,10 +2,10 @@ server: port: 3000 spring: datasource: - username: landaiqing - password: Z1JyO9hVmDLYbpWnM7oiFO3BEoDCrV6njYjl/2oudBHwTepxLxnaZ1aDfohrYwYpGWUodgu7gnRcZ5mfIm6lIg== + username: root + password: BZbVbGDBePiA2q8/mt0eMxKNpHniDzxBtOxFadQiAOTDzCDlopC4qOKwwBEi9CAZcuFsCrRJdwn0wP6jwsnzxw== driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://116.196.80.239:3306/schisandra-cloud-storage?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true + url: jdbc:mysql://1.95.0.111:3306/schisandra-cloud-storage?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true type: com.alibaba.druid.pool.DruidDataSource druid: initial-size: 20 @@ -32,7 +32,7 @@ spring: # Redis数据库索引(默认为0) database: 1 # Redis服务器地址 - host: 116.196.80.239 + host: 1.95.0.111 # Redis服务器连接端口 port: 6379 # Redis服务器连接密码(默认为空) @@ -49,7 +49,7 @@ spring: max-idle: 10 # 连接池中的最小空闲连接 min-idle: 0 -publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKXX1HPAKowh8Ub9fDTGI5exGLMRppbVQFDlDBBxAWcbfdLN5hXgfg02D7wy+jCe9uCdV5vgZR72PFoe+mnLp80CAwEAAQ== +publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANUVxjcrVoirBZaNmDrUqatHEW4FOHbO5ynW6zvhIbRMo6hEFGgglbURkjuHOlgEduxJVz6Xa+sG+FMrxTguOJECAwEAAQ== logging: config: classpath:log4j2-spring.xml ############## Sa-Token 配置 (文档: https://sa-token.cc) ############## diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/bootstrap.yml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/bootstrap.yml index c3e60a2..68c0a9e 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/bootstrap.yml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/bootstrap.yml @@ -6,12 +6,12 @@ spring: cloud: nacos: config: - server-addr: 116.196.80.239:8848 + server-addr: 1.95.0.111:8848 prefix: ${spring.application.name} group: DEFAULT_GROUP namespace: file-extension: yaml discovery: enabled: true - server-addr: 116.196.80.239:8848 + server-addr: 1.95.0.111:8848 diff --git a/schisandra-cloud-storage-oss/src/main/resources/application.yml b/schisandra-cloud-storage-oss/src/main/resources/application.yml index f890f70..b142558 100644 --- a/schisandra-cloud-storage-oss/src/main/resources/application.yml +++ b/schisandra-cloud-storage-oss/src/main/resources/application.yml @@ -1,6 +1,6 @@ server: port: 4000 minio: - url: http://116.196.80.239:9000/ + url: http://1.95.0.111:9000/ accessKey: landaiqing secretKey: LDQ20020618xxx diff --git a/schisandra-cloud-storage-oss/src/main/resources/bootstrap.yml b/schisandra-cloud-storage-oss/src/main/resources/bootstrap.yml index 7f1174e..5c4c820 100644 --- a/schisandra-cloud-storage-oss/src/main/resources/bootstrap.yml +++ b/schisandra-cloud-storage-oss/src/main/resources/bootstrap.yml @@ -6,12 +6,12 @@ spring: cloud: nacos: config: - server-addr: 116.196.80.239:8848 + server-addr: 1.95.0.111:8848 prefix: ${spring.application.name} group: DEFAULT_GROUP namespace: file-extension: yaml discovery: enabled: true - server-addr: 116.196.80.239:8848 + server-addr: 1.95.0.111:8848 diff --git a/schisandra-cloud-storage-wechat/src/main/resources/application.yml b/schisandra-cloud-storage-wechat/src/main/resources/application.yml index db5625e..871bccf 100644 --- a/schisandra-cloud-storage-wechat/src/main/resources/application.yml +++ b/schisandra-cloud-storage-wechat/src/main/resources/application.yml @@ -6,7 +6,7 @@ spring: # Redis数据库索引(默认为0) database: 1 # Redis服务器地址 - host: 116.196.80.239 + host: 1.95.0.111 # Redis服务器连接端口 port: 6379 # Redis服务器连接密码(默认为空) From 763c947ee162ea78c3eab488f0840fdbf62dc940 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Wed, 1 May 2024 21:38:05 +0800 Subject: [PATCH 05/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlombox=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pom.xml | 2 +- .../schisandra-cloud-storage-auth-common/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index c68c4e9..c3e5eed 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -22,7 +22,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.28 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml index 13a1cf4..d72eba8 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml @@ -36,7 +36,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.28 org.mapstruct From 4be3994bd7e5ed414b075001824fedfc71a17bfe Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Wed, 1 May 2024 21:43:42 +0800 Subject: [PATCH 06/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlombox=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schisandra-cloud-storage-auth-api/pom.xml | 2 +- .../pom.xml | 2 +- .../schisandra-cloud-storage-auth-common/pom.xml | 2 +- .../schisandra-cloud-storage-auth-domain/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml index 5da4b4b..66f78f6 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml @@ -31,7 +31,7 @@ org.projectlombok lombok - 1.18.28 + 1.18.24 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index c3e5eed..7e5947b 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -22,7 +22,7 @@ org.projectlombok lombok - 1.18.28 + 1.18.24 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml index d72eba8..d2ef0c7 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml @@ -36,7 +36,7 @@ org.projectlombok lombok - 1.18.28 + 1.18.24 org.mapstruct diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml index bed94cc..85fb89c 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml @@ -21,7 +21,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.24 From 2b955225faad079e3b1f395c5c82bb38acd49d59 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Wed, 1 May 2024 21:46:09 +0800 Subject: [PATCH 07/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlombox=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schisandra-cloud-storage-auth-api/pom.xml | 2 +- .../pom.xml | 2 +- .../schisandra-cloud-storage-auth-common/pom.xml | 2 +- .../schisandra-cloud-storage-auth-domain/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml index 66f78f6..d48d04c 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml @@ -31,7 +31,7 @@ org.projectlombok lombok - 1.18.24 + 1.18.20 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index 7e5947b..c68c4e9 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -22,7 +22,7 @@ org.projectlombok lombok - 1.18.24 + 1.18.20 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml index d2ef0c7..13a1cf4 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml @@ -36,7 +36,7 @@ org.projectlombok lombok - 1.18.24 + 1.18.20 org.mapstruct diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml index 85fb89c..bed94cc 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml @@ -21,7 +21,7 @@ org.projectlombok lombok - 1.18.24 + 1.18.20 From 7dbe4a44776319f7d892ee514232f571dd51aa0d Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Wed, 1 May 2024 21:50:05 +0800 Subject: [PATCH 08/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlombox=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schisandra-cloud-storage-auth-api/pom.xml | 2 +- .../pom.xml | 2 +- .../schisandra-cloud-storage-auth-common/pom.xml | 2 +- .../schisandra-cloud-storage-auth-domain/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml index d48d04c..f6b3b63 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml @@ -31,7 +31,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.26 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index c68c4e9..d7d5c3b 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -22,7 +22,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.26 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml index 13a1cf4..f28f185 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml @@ -36,7 +36,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.26 org.mapstruct diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml index bed94cc..67bceac 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml @@ -21,7 +21,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.26 From b251ddf8ca5bf3ae782af88c94a5a3442d97f803 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Wed, 1 May 2024 21:53:06 +0800 Subject: [PATCH 09/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlombox=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schisandra-cloud-storage-auth-api/pom.xml | 2 +- .../pom.xml | 2 +- .../schisandra-cloud-storage-auth-common/pom.xml | 2 +- .../schisandra-cloud-storage-auth-domain/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml index f6b3b63..a5d50dd 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml @@ -31,7 +31,7 @@ org.projectlombok lombok - 1.18.26 + 1.18.16 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index d7d5c3b..db8c89f 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -22,7 +22,7 @@ org.projectlombok lombok - 1.18.26 + 1.18.16 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml index f28f185..daa68d2 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml @@ -36,7 +36,7 @@ org.projectlombok lombok - 1.18.26 + 1.18.16 org.mapstruct diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml index 67bceac..9f13b58 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml @@ -21,7 +21,7 @@ org.projectlombok lombok - 1.18.26 + 1.18.16 From e2aa6f0b5ba3737a4f8a0a2e9d3ee4506c72ab78 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Wed, 1 May 2024 21:55:00 +0800 Subject: [PATCH 10/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlombox=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schisandra-cloud-storage-auth-api/pom.xml | 2 +- .../pom.xml | 2 +- .../schisandra-cloud-storage-auth-common/pom.xml | 2 +- .../schisandra-cloud-storage-auth-domain/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml index a5d50dd..2fdc7d4 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml @@ -31,7 +31,7 @@ org.projectlombok lombok - 1.18.16 + 1.18.22 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index db8c89f..ae2a3b5 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -22,7 +22,7 @@ org.projectlombok lombok - 1.18.16 + 1.18.22 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml index daa68d2..b7536c4 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml @@ -36,7 +36,7 @@ org.projectlombok lombok - 1.18.16 + 1.18.22 org.mapstruct diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml index 9f13b58..660e7c4 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml @@ -21,7 +21,7 @@ org.projectlombok lombok - 1.18.16 + 1.18.22 From 47d527662ac1617b2ae9de7621b479ac079de9b7 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Wed, 1 May 2024 21:57:58 +0800 Subject: [PATCH 11/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlombox=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schisandra-cloud-storage-auth-api/pom.xml | 2 +- .../pom.xml | 2 +- .../schisandra-cloud-storage-auth-common/pom.xml | 2 +- .../schisandra-cloud-storage-auth-domain/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml index 2fdc7d4..c2cf075 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml @@ -31,7 +31,7 @@ org.projectlombok lombok - 1.18.22 + 1.18.32 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index ae2a3b5..5f7fc6a 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -22,7 +22,7 @@ org.projectlombok lombok - 1.18.22 + 1.18.32 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml index b7536c4..e952e93 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml @@ -36,7 +36,7 @@ org.projectlombok lombok - 1.18.22 + 1.18.32 org.mapstruct diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml index 660e7c4..7de5577 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml @@ -21,7 +21,7 @@ org.projectlombok lombok - 1.18.22 + 1.18.32 From a36b1e9f415006132a59a1360a118475f7208766 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Sat, 4 May 2024 01:27:33 +0800 Subject: [PATCH 12/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlombox=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schisandra-cloud-storage-auth-api/pom.xml | 2 +- .../pom.xml | 2 +- .../schisandra-cloud-storage-auth-common/pom.xml | 2 +- .../schisandra-cloud-storage-auth-domain/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml index c2cf075..5da4b4b 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml @@ -31,7 +31,7 @@ org.projectlombok lombok - 1.18.32 + 1.18.28 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index 5f7fc6a..c3e5eed 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -22,7 +22,7 @@ org.projectlombok lombok - 1.18.32 + 1.18.28 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml index e952e93..d72eba8 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml @@ -36,7 +36,7 @@ org.projectlombok lombok - 1.18.32 + 1.18.28 org.mapstruct diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml index 7de5577..1549d29 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml @@ -21,7 +21,7 @@ org.projectlombok lombok - 1.18.32 + 1.18.28 From 2bf537a72425c755bb4643dd80df192801caac94 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Sat, 4 May 2024 02:20:18 +0800 Subject: [PATCH 13/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlombox=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schisandra-cloud-storage-auth-api/pom.xml | 2 +- .../pom.xml | 2 +- .../schisandra-cloud-storage-auth-common/pom.xml | 2 +- .../schisandra-cloud-storage-auth-domain/pom.xml | 2 +- schisandra-cloud-storage-wechat/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml index 5da4b4b..d48d04c 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml @@ -31,7 +31,7 @@ org.projectlombok lombok - 1.18.28 + 1.18.20 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index c3e5eed..c68c4e9 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -22,7 +22,7 @@ org.projectlombok lombok - 1.18.28 + 1.18.20 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml index d72eba8..13a1cf4 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml @@ -36,7 +36,7 @@ org.projectlombok lombok - 1.18.28 + 1.18.20 org.mapstruct diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml index 1549d29..bed94cc 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml @@ -21,7 +21,7 @@ org.projectlombok lombok - 1.18.28 + 1.18.20 diff --git a/schisandra-cloud-storage-wechat/pom.xml b/schisandra-cloud-storage-wechat/pom.xml index e084267..33b6a23 100644 --- a/schisandra-cloud-storage-wechat/pom.xml +++ b/schisandra-cloud-storage-wechat/pom.xml @@ -31,7 +31,7 @@ org.projectlombok lombok - 1.18.28 + 1.18.20 org.springframework.boot From 78a11bd074b163532c34842923b3684907e15804 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Sat, 4 May 2024 02:23:20 +0800 Subject: [PATCH 14/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlombox=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schisandra-cloud-storage-auth-api/pom.xml | 2 +- .../pom.xml | 2 +- .../schisandra-cloud-storage-auth-common/pom.xml | 2 +- .../schisandra-cloud-storage-auth-domain/pom.xml | 2 +- schisandra-cloud-storage-oss/pom.xml | 2 +- schisandra-cloud-storage-wechat/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml index d48d04c..a5d50dd 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml @@ -31,7 +31,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.16 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index c68c4e9..db8c89f 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -22,7 +22,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.16 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml index 13a1cf4..daa68d2 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml @@ -36,7 +36,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.16 org.mapstruct diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml index bed94cc..9f13b58 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml @@ -21,7 +21,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.16 diff --git a/schisandra-cloud-storage-oss/pom.xml b/schisandra-cloud-storage-oss/pom.xml index 35dbc54..ced99f0 100644 --- a/schisandra-cloud-storage-oss/pom.xml +++ b/schisandra-cloud-storage-oss/pom.xml @@ -38,7 +38,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.16 com.alibaba.cloud diff --git a/schisandra-cloud-storage-wechat/pom.xml b/schisandra-cloud-storage-wechat/pom.xml index 33b6a23..e48e7cf 100644 --- a/schisandra-cloud-storage-wechat/pom.xml +++ b/schisandra-cloud-storage-wechat/pom.xml @@ -31,7 +31,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.16 org.springframework.boot From e047c4b605aff4133b44c6544d3baf7da7c3715d Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Sat, 4 May 2024 02:24:31 +0800 Subject: [PATCH 15/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlombox=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schisandra-cloud-storage-auth-api/pom.xml | 2 +- .../pom.xml | 2 +- .../schisandra-cloud-storage-auth-common/pom.xml | 2 +- .../schisandra-cloud-storage-auth-domain/pom.xml | 2 +- schisandra-cloud-storage-oss/pom.xml | 2 +- schisandra-cloud-storage-wechat/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml index a5d50dd..66f78f6 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-api/pom.xml @@ -31,7 +31,7 @@ org.projectlombok lombok - 1.18.16 + 1.18.24 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index db8c89f..7e5947b 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -22,7 +22,7 @@ org.projectlombok lombok - 1.18.16 + 1.18.24 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml index daa68d2..d2ef0c7 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/pom.xml @@ -36,7 +36,7 @@ org.projectlombok lombok - 1.18.16 + 1.18.24 org.mapstruct diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml index 9f13b58..85fb89c 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml @@ -21,7 +21,7 @@ org.projectlombok lombok - 1.18.16 + 1.18.24 diff --git a/schisandra-cloud-storage-oss/pom.xml b/schisandra-cloud-storage-oss/pom.xml index ced99f0..2c2df04 100644 --- a/schisandra-cloud-storage-oss/pom.xml +++ b/schisandra-cloud-storage-oss/pom.xml @@ -38,7 +38,7 @@ org.projectlombok lombok - 1.18.16 + 1.18.24 com.alibaba.cloud diff --git a/schisandra-cloud-storage-wechat/pom.xml b/schisandra-cloud-storage-wechat/pom.xml index e48e7cf..2898b64 100644 --- a/schisandra-cloud-storage-wechat/pom.xml +++ b/schisandra-cloud-storage-wechat/pom.xml @@ -31,7 +31,7 @@ org.projectlombok lombok - 1.18.16 + 1.18.24 org.springframework.boot From c30c6da42f3ca34bb7690a11acb80cd66d88bd6a Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Sat, 4 May 2024 02:28:18 +0800 Subject: [PATCH 16/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Djenkins=20lombox?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pom.xml | 64 +++++++++---------- .../pom.xml | 38 +++++------ 2 files changed, 51 insertions(+), 51 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index 7e5947b..32b0267 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -9,38 +9,38 @@ schisandra-cloud-storage-auth-application-controller schisandra-cloud-storage-auth-application-controller - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - UTF-8 - - - org.projectlombok - lombok - 1.18.24 - - - - org.mapstruct - mapstruct-processor - 1.4.2.Final - - - - org.projectlombok - lombok-mapstruct-binding - 0.2.0 - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8 8 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml index 85fb89c..220674b 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml @@ -17,25 +17,25 @@ 1.8 1.8 UTF-8 - - - org.projectlombok - lombok - 1.18.24 - - - - org.mapstruct - mapstruct-processor - 1.4.2.Final - - - - org.projectlombok - lombok-mapstruct-binding - 0.2.0 - - + + + + + + + + + + + + + + + + + + + From 382174d8dd0a2a9b35c39b0bbad6dbb3d10d8d73 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Sat, 4 May 2024 02:29:34 +0800 Subject: [PATCH 17/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Djenkins=20lombox?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schisandra-cloud-storage-auth-starter/pom.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/pom.xml index 8591203..2326282 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/pom.xml @@ -92,13 +92,13 @@ - - - - org.projectlombok - lombok - - + + + + + + + From 39752f5f41904721bf6d09e91db41f3c6ca244eb Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Sat, 4 May 2024 02:33:41 +0800 Subject: [PATCH 18/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Djenkins=20lombox?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pom.xml | 64 +++++++++---------- .../pom.xml | 38 +++++------ .../pom.xml | 42 ++++++++++-- 3 files changed, 86 insertions(+), 58 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index 32b0267..7e5947b 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -9,38 +9,38 @@ schisandra-cloud-storage-auth-application-controller schisandra-cloud-storage-auth-application-controller - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + UTF-8 + + + org.projectlombok + lombok + 1.18.24 + + + + org.mapstruct + mapstruct-processor + 1.4.2.Final + + + + org.projectlombok + lombok-mapstruct-binding + 0.2.0 + + + + + + 8 8 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml index 220674b..85fb89c 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml @@ -17,25 +17,25 @@ 1.8 1.8 UTF-8 - - - - - - - - - - - - - - - - - - - + + + org.projectlombok + lombok + 1.18.24 + + + + org.mapstruct + mapstruct-processor + 1.4.2.Final + + + + org.projectlombok + lombok-mapstruct-binding + 0.2.0 + + diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/pom.xml index 2326282..3793190 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/pom.xml @@ -92,13 +92,41 @@ - - - - - - - + + + + org.projectlombok + lombok + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + UTF-8 + + + org.projectlombok + lombok + 1.18.24 + + + + org.mapstruct + mapstruct-processor + 1.4.2.Final + + + + org.projectlombok + lombok-mapstruct-binding + 0.2.0 + + From 510c423e6f1bc15aeb07d56287673304f582317d Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Sat, 4 May 2024 14:31:48 +0800 Subject: [PATCH 19/28] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E5=85=AC=E4=BC=97=E5=8F=B7=E6=A8=A1=E5=9D=97=E7=AB=AF?= =?UTF-8?q?=E5=8F=A3/=E6=B7=BB=E5=8A=A0maven-compiler-plugin=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pom.xml | 1 + .../schisandra-cloud-storage-auth-domain/pom.xml | 1 + .../schisandra-cloud-storage-auth-starter/pom.xml | 1 + .../src/main/resources/application.yml | 2 +- 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml index 7e5947b..860327c 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/pom.xml @@ -14,6 +14,7 @@ org.apache.maven.plugins maven-compiler-plugin + 3.13.0 1.8 1.8 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml index 85fb89c..9891b65 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/pom.xml @@ -13,6 +13,7 @@ org.apache.maven.plugins maven-compiler-plugin + 3.13.0 1.8 1.8 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/pom.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/pom.xml index 3793190..746aa35 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/pom.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/pom.xml @@ -104,6 +104,7 @@ org.apache.maven.plugins maven-compiler-plugin + 3.13.0 1.8 1.8 diff --git a/schisandra-cloud-storage-wechat/src/main/resources/application.yml b/schisandra-cloud-storage-wechat/src/main/resources/application.yml index 871bccf..4fe070a 100644 --- a/schisandra-cloud-storage-wechat/src/main/resources/application.yml +++ b/schisandra-cloud-storage-wechat/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 3010 + port: 80 spring: # redis配置 redis: From b2dde0c8400c10c64accbcb05afcf4f187fb8df0 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Sat, 4 May 2024 14:48:19 +0800 Subject: [PATCH 20/28] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DWeChat=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=89=93=E5=8C=85=E6=B2=A1=E6=9C=89target=E7=9B=AE?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- schisandra-cloud-storage-wechat/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schisandra-cloud-storage-wechat/pom.xml b/schisandra-cloud-storage-wechat/pom.xml index 2898b64..d9875d2 100644 --- a/schisandra-cloud-storage-wechat/pom.xml +++ b/schisandra-cloud-storage-wechat/pom.xml @@ -5,7 +5,7 @@ com.schisandra schisandra-cloud-storage-wechat 1.0-SNAPSHOT - pom + jar schisandra-cloud-storage-wechat From 6160d98dddf67d0a99e6f8110ae9f91cd695fd77 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Tue, 7 May 2024 17:20:55 +0800 Subject: [PATCH 21/28] feat: remove Encrypt module --- .../controller/EncryptController.java | 52 ---- .../application/filter/EncryptApiFilter.java | 100 ------- .../wrapper/EncryptRequestWrapper.java | 257 ------------------ .../application/wrapper/ResponseWrapper.java | 114 -------- .../auth/common/entity/ApiEncryptRes.java | 19 -- .../auth/common/utils/ApiSecurityUtils.java | 44 --- 6 files changed, 586 deletions(-) delete mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java delete mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java delete mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java delete mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java delete mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/entity/ApiEncryptRes.java delete mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/ApiSecurityUtils.java diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java deleted file mode 100644 index ccfe8ce..0000000 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/EncryptController.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.schisandra.auth.application.controller; - -import com.schisandra.auth.common.entity.Result; -import com.schisandra.auth.common.redis.RedisUtil; -import com.schisandra.auth.common.utils.MD5Util; -import com.schisandra.auth.common.utils.RSAUtils; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.util.Map; - -/** - * @ClassName EncryptController - * @Description TODO - * @Author L - * @Date 2024/1/29 9:18 - */ -@RestController -@RequestMapping("/encrypt") -@Slf4j -public class EncryptController { - @Resource - private RedisUtil redisUtil; - private String authPublicKeyPrefix = "auth.publicKey"; - private String authPrivateKeyPrefix = "auth.privateKey"; - - @PostMapping("/getPublicKey") - public Result getPublicKey() throws Exception { - //获取当前登陆账号对应的token,这行代码就不贴了。 - String token="12345"; - String publicKey=""; - if (StringUtils.isNotBlank(token)) { - Map stringStringMap = RSAUtils.genKeyPair(); - publicKey = stringStringMap.get("publicKey"); - String privateKey = stringStringMap.get("privateKey"); - String md5Token = MD5Util.md5(token); - //这个地方的存放时间根据你的token存放时间走 - redisUtil.set(md5Token + "publicKey", publicKey); - redisUtil.set(md5Token + "privateKey", privateKey); - return Result.ok(publicKey); - } - return Result.ok(publicKey); - } - -} - diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java deleted file mode 100644 index 8bcbb28..0000000 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/filter/EncryptApiFilter.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.schisandra.auth.application.filter; - -import cn.hutool.core.util.StrUtil; -import cn.hutool.extra.servlet.ServletUtil; -import cn.hutool.json.JSONUtil; -import com.alibaba.fastjson.JSON; -import com.schisandra.auth.application.wrapper.EncryptRequestWrapper; -import com.schisandra.auth.application.wrapper.ResponseWrapper; -import com.schisandra.auth.common.entity.ApiEncryptRes; -import com.schisandra.auth.common.utils.ApiSecurityUtils; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.boot.web.servlet.filter.OrderedFilter; -import org.springframework.stereotype.Component; -import org.springframework.web.filter.OncePerRequestFilter; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.nio.charset.StandardCharsets; - -@Slf4j -@Component -public class EncryptApiFilter extends OncePerRequestFilter implements OrderedFilter { - public static final int DEFAULT_ORDER = Integer.MAX_VALUE; - - - @Override - protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { - String servletPath = request.getServletPath(); - - ResponseWrapper wrapper = new ResponseWrapper(response); - String requestContent = null; - - if (ServletUtil.isMultipart(request)) { - } else { - EncryptRequestWrapper encryptRequestWrapper = EncryptRequestWrapper.newOrGetMultiReadHttpServletRequest(request); - requestContent = encryptRequestWrapper.getBody(); - request = encryptRequestWrapper; - - } - log.debug("{}>>>{}", servletPath, requestContent); - - try { - filterChain.doFilter(request, wrapper); - } finally { - try { - process(request, wrapper, response); - } catch (Exception e) { - log.error("AesFilter error", e); - } - } - } - - @SneakyThrows - protected void process(HttpServletRequest request, ResponseWrapper responseWrapper, HttpServletResponse response) { - - String servletPath = request.getRequestURI(); - String isencrypt = request.getHeader("Isencrypt"); - ServletOutputStream out = response.getOutputStream(); - if (ResponseWrapper.isJsonContentType(responseWrapper.getContentType())) { - String responseContent = responseWrapper.getTextContent(); - if (StrUtil.isNotEmpty(responseContent)&&StringUtils.isNotBlank(isencrypt)) { - String JSPublicKey = ((EncryptRequestWrapper)request).getJSPublicKey(); - if (StringUtils.isNotBlank(JSPublicKey)) { - ApiEncryptRes apiEncryptRes = ApiSecurityUtils.encrypt(JSON.toJSONString(responseContent), JSPublicKey); - responseContent = JSONUtil.toJsonStr(apiEncryptRes); - } - log.info("{}<<<{}", servletPath, responseContent); - byte[] bytes = responseContent.getBytes(StandardCharsets.UTF_8); - response.setContentLength(bytes.length); - out.write(bytes); - out.flush(); - out.close(); - } else { - responseWrapper.getByteArrayOutputStream().writeTo(out); - out.flush(); - out.close(); - } - } else { - responseWrapper.getByteArrayOutputStream().writeTo(out); - out.flush(); - out.close(); - } - } - - @Override - public void afterPropertiesSet() throws ServletException { - super.afterPropertiesSet(); - } - - @Override - public int getOrder() { - return DEFAULT_ORDER; - } -} diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java deleted file mode 100644 index 89c256a..0000000 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/EncryptRequestWrapper.java +++ /dev/null @@ -1,257 +0,0 @@ -package com.schisandra.auth.application.wrapper; - -import cn.hutool.core.convert.Convert; -import com.alibaba.fastjson.JSONObject; -import com.schisandra.auth.common.redis.RedisUtil; -import com.schisandra.auth.common.utils.ApiSecurityUtils; -import com.schisandra.auth.common.utils.MD5Util; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; - -import javax.servlet.ReadListener; -import javax.servlet.ServletInputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletRequestWrapper; -import java.io.*; - - -import cn.hutool.core.io.FastByteArrayOutputStream; -import cn.hutool.core.io.IoUtil; -import cn.hutool.core.lang.Assert; -import cn.hutool.http.ContentType; - - -import lombok.SneakyThrows; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; -import org.springframework.web.multipart.support.StandardServletMultipartResolver; -import org.springframework.web.util.WebUtils; - - -import java.util.TreeMap; - -/** - * @ClassName requestWrapper - * @Description TODO - * @Author landaiqing - * @Date 2024/1/31 17:58 - */ - -/** - * 确保request可以多次读取 - */ - -@Slf4j -public class EncryptRequestWrapper extends HttpServletRequestWrapper { - - - - //2024-02-02由于在过滤器中无法直接通过Autowired获取Bean,因此需要通过spring上下文来获取IOC管理的实体类 -// @Autowired -// private RedisUtil redisUtil; - - protected FastByteArrayOutputStream cachedContent; - protected String JSPublicKey; - protected EncryptRequestWrapper(HttpServletRequest request ) { - - super(request); - RedisUtil redisUtils =getBean(RedisUtil.class, request); - this.copyBody(redisUtils); - - - } - - /** - * - * 此处主要是用于读取 RedisUtil - * @param clazz - * @param request - * @param - * @return - */ - public T getBean(Class clazz, HttpServletRequest request){ - WebApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()); - return applicationContext.getBean(clazz); - } - - public static EncryptRequestWrapper newOrGetMultiReadHttpServletRequest(HttpServletRequest request) { - EncryptRequestWrapper multiReadHttpServletRequest = getMultiReadHttpServletRequest(request); - if (null != multiReadHttpServletRequest) { - return multiReadHttpServletRequest; - } else { - String contentType = request.getContentType(); - if (contentType != null && contentType.contains(ContentType.MULTIPART.getValue())) { - // 将转化后的 request 放入过滤链中 - request = new StandardServletMultipartResolver().resolveMultipart(request); - } - return new EncryptRequestWrapper(request); - } - } - - public static EncryptRequestWrapper getMultiReadHttpServletRequest(HttpServletRequest request) { - EncryptRequestWrapper nativeRequest = WebUtils.getNativeRequest(request, EncryptRequestWrapper.class); - if (null != nativeRequest) { - return nativeRequest; - } else if (request instanceof EncryptRequestWrapper) { - return (EncryptRequestWrapper) request; - } else { - return null; - } - } - //重新读取请求,因为request只可以被读取一次,需要重新设置为可多次读取 - @SneakyThrows - protected void copyBody(RedisUtil redisUtils) { - int length = this.getContentLength(); - if (length > 0) { - cachedContent = IoUtil.read(getRequest().getInputStream()); - if (StringUtils.isNotBlank(this.getHeader("isEncrypt"))&&StringUtils.isNotBlank(this.getHeader("Authorization"))) { - String body = new String(cachedContent.toByteArray()); - log.info("------------------- body = " + body + "------------------------"); - if (StringUtils.isNotBlank(body)) { - JSONObject jsonBody = JSONObject.parseObject(body); - if(null != jsonBody){ - String dataEncrypt = jsonBody.getString("data"); - String aeskey = jsonBody.getString("aeskey"); - JSPublicKey = jsonBody.getString("frontPublicKey"); - String data; - JSONObject json = null; - log.info("------------------- dataEncrypt = " + dataEncrypt + "------------------------"); - log.info("------------------- aesKey = " + aeskey + "------------------------"); - String token = this.getHeader("Authorization"); - String md5Token = MD5Util.md5(token); - String privateKey = Convert.toStr(redisUtils.get(md5Token + "privateKey")); - data = ApiSecurityUtils.decrypt(aeskey, dataEncrypt,privateKey); - // 如果数据不为空就编译 - if (StringUtils.isNotBlank(data)) { - //如果参数为空前端传回undefined - if ("undefined".equalsIgnoreCase(data)) { - json = new JSONObject(); - } else { - json = JSONObject.parseObject(data); - } - } - if (json != null) { - body = json.toJSONString(); - } - } - log.info("------------------- body = " + body + "------------------------"); - cachedContent.reset(); - cachedContent.write( body.getBytes(), 0, body.getBytes().length); - - } - } - } else { - cachedContent = new FastByteArrayOutputStream(); - } - } - - @Override - public int getContentLength() { - if (null != cachedContent) { - return cachedContent.size(); - } - return super.getContentLength(); - } - - public byte[] getByteArrayBody() { - return cachedContent.toByteArray(); - } - - public String getBody() { - String body = null; - if (cachedContent != null && cachedContent.size() > 0) { - body = new String(cachedContent.toByteArray()); - } - return body; - } - - public String getSortBody() { - return JSONObject.toJSONString(this.getBody(TreeMap.class)); - } - - public T getBody(Class type) { - return cn.hutool.json.JSONUtil.toBean(this.getBody(), type); - } - - //这个方法为获取前端给后端用于加密aeskey的rsa公钥 - public String getJSPublicKey(){ - return JSPublicKey; - } - @Override - public BufferedReader getReader() throws IOException { - return new BufferedReader(new InputStreamReader(getInputStream())); - } - - @Override - public ServletInputStream getInputStream() throws IOException { - if (this.getContentLength() < 1) { - return super.getInputStream(); - } - return new ResettableServletInputStream(new ByteArrayInputStream(cachedContent.toByteArray())); - } - - private class ResettableServletInputStream extends ServletInputStream { - - private final InputStream sourceStream; - - private boolean finished = false; - - - /** - * Create a DelegatingServletInputStream for the given source stream. - * - * @param sourceStream the source stream (never {@code null}) - */ - public ResettableServletInputStream(InputStream sourceStream) { - Assert.notNull(sourceStream, "Source InputStream must not be null"); - this.sourceStream = sourceStream; - } - - /** - * Return the underlying source stream (never {@code null}). - */ - public final InputStream getSourceStream() { - return this.sourceStream; - } - - - @Override - public int read() throws IOException { - int data = this.sourceStream.read(); - if (data == -1) { - this.finished = true; - } - return data; - } - - @Override - public int available() throws IOException { - return this.sourceStream.available(); - } - - @Override - public void close() throws IOException { - super.close(); - this.sourceStream.close(); - } - - @Override - public boolean isFinished() { - return finished; - } - - @Override - public boolean isReady() { - return true; - } - - @Override - public void setReadListener(ReadListener readListener) { - - } - } - - - -} - diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java deleted file mode 100644 index 10f6eed..0000000 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/wrapper/ResponseWrapper.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.schisandra.auth.application.wrapper; - -import cn.hutool.core.util.StrUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.http.MediaType; - -import javax.servlet.ServletOutputStream; -import javax.servlet.WriteListener; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpServletResponseWrapper; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintWriter; -/** * 返回值输出代理类 - * @ClassName ResponseWrapper - * @Description TODO - * @Author L - * @Date 2024/1/31 18:58 - */ - -@Slf4j -public class ResponseWrapper extends HttpServletResponseWrapper { - ByteArrayOutputStream _stream = new ByteArrayOutputStream(); - PrintWriter _pw = new PrintWriter(_stream); - - public ResponseWrapper(HttpServletResponse resp) throws IOException { - super(resp); - } - - /** - * 覆盖getWriter()方法,将字符流缓冲到本地 - */ - @Override - public PrintWriter getWriter() throws IOException { - return _pw; - } - - /** - * 覆盖getOutputStream()方法,将字节流缓冲到本地 - */ - @Override - public ServletOutputStream getOutputStream() throws IOException { - return new ServletOutputStream() { - @Override - public boolean isReady() { - return false; - } - - @Override - public void setWriteListener(WriteListener writeListener) { - - } - - @Override - public void write(int b) throws IOException { - _stream.write(b); - } - }; - } - - /** - * 把缓冲区内容写入输出流后关闭 - * - * @author xxj - */ - public void flush() { - try { - _pw.flush(); - _pw.close(); - _stream.flush(); - _stream.close(); - } catch (IOException e) { - log.error("", e); - } - } - - /** - * 获取字节流 - * - * @return - */ - public ByteArrayOutputStream getByteArrayOutputStream() { - return _stream; - } - - /** - * 将换出区内容转为文本输出 - * - * @return - */ - public String getTextContent() { - flush(); - return _stream.toString(); - } - - public static boolean isTextContentType(String contentType) { - boolean flag = false; - if (StrUtil.isBlank(contentType)) { - return false; - } else { - flag = StrUtil.startWithIgnoreCase(contentType, "text"); - if (!flag) { - flag = isJsonContentType(contentType); - } - } - return flag; - } - - public static boolean isJsonContentType(String contentType) { - return !StrUtil.isBlank(contentType) - && (StrUtil.containsIgnoreCase(contentType, "application/problem+json") - || StrUtil.containsIgnoreCase(contentType, MediaType.APPLICATION_JSON_VALUE)); - } -} diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/entity/ApiEncryptRes.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/entity/ApiEncryptRes.java deleted file mode 100644 index 9ba8785..0000000 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/entity/ApiEncryptRes.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.schisandra.auth.common.entity; - -import lombok.Data; - -/** - * @Classname ApiEncryptRes - * @BelongsProject: schisandra-cloud-storage - * @BelongsPackage: com.schisandra.auth.common.entity - * @Author: landaiqing - * @CreateTime: 2024-04-28 12:01 - * @Description: TODO - * @Version: 1.0 - */ -@Data -public class ApiEncryptRes { - private String aesKeyByRsa; - private String data; - private String frontPublicKey; -} diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/ApiSecurityUtils.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/ApiSecurityUtils.java deleted file mode 100644 index 230bc69..0000000 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/utils/ApiSecurityUtils.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.schisandra.auth.common.utils; - -import com.schisandra.auth.common.entity.ApiEncryptRes; -import com.schisandra.auth.common.utils.AESUtils; -import com.schisandra.auth.common.utils.RSAUtils; -import org.apache.commons.codec.binary.Base64; -/** - * @ClassName ApiSecurityUtils - * @Description TODO - * @Author L - * @Date 2024/1/26 17:39 - */ -public class ApiSecurityUtils { - /** - * - * @param aesKeyByRsa 经过rsa加密的aeskey - * @param decryptStr 经过aes加密的数据 - * @return 解密后的数据 - */ - public static String decrypt(String aesKeyByRsa,String decryptStr,String privateKey) throws Exception { - byte[] bytes = RSAUtils.decryptByPrivateKey(Base64.decodeBase64(aesKeyByRsa), privateKey); - String aesKey = new String(bytes); - return AESUtils.decrypt(decryptStr, aesKey); - } - - /** - * - * @param encryptStr 要加密的数据 - * @param frontPublicKey 前端公钥 - * @return 加密后的数据 - */ - public static ApiEncryptRes encrypt(String encryptStr, String frontPublicKey) throws Exception { - String aesKey = AESUtils.getKey(); - String data = AESUtils.encrypt(encryptStr, aesKey); - ApiEncryptRes apiEncryptRes = new ApiEncryptRes(); - String aesKeyByRsa = Base64.encodeBase64String(RSAUtils.encryptByPublicKey(aesKey.getBytes(), frontPublicKey)); - apiEncryptRes.setAesKeyByRsa(aesKeyByRsa); - apiEncryptRes.setData(data); - return apiEncryptRes; - } - -} - - From b3dd3101f3998eec83d2edb4fef920a52b883ce8 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Tue, 7 May 2024 19:53:11 +0800 Subject: [PATCH 22/28] feat: update gateway module --- schisandra-cloud-storage-gateway/pom.xml | 117 +++++++++++++++++- .../gateway/GatewayApplication.java | 19 +++ .../gateway/auth/SaTokenConfigure.java | 32 +++++ .../gateway/auth/StpInterfaceImpl.java | 62 ++++++++++ .../gateway/entity/AuthPermission.java | 53 ++++++++ .../schisandra/gateway/entity/AuthRole.java | 42 +++++++ .../com/schisandra/gateway/entity/Result.java | 59 +++++++++ .../gateway/enums/ResultCodeEnum.java | 24 ++++ .../exception/GatewayExceptionHandler.java | 55 ++++++++ .../gateway/filter/LoginFilter.java | 46 +++++++ .../schisandra/gateway/redis/RedisConfig.java | 49 ++++++++ .../schisandra/gateway/redis/RedisUtil.java | 107 ++++++++++++++++ .../src/main/resources/application.yml | 57 +++++++++ .../src/main/resources/bootstrap.yml | 17 +++ 14 files changed, 738 insertions(+), 1 deletion(-) create mode 100644 schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/GatewayApplication.java create mode 100644 schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/auth/SaTokenConfigure.java create mode 100644 schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/auth/StpInterfaceImpl.java create mode 100644 schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/entity/AuthPermission.java create mode 100644 schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/entity/AuthRole.java create mode 100644 schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/entity/Result.java create mode 100644 schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/enums/ResultCodeEnum.java create mode 100644 schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/exception/GatewayExceptionHandler.java create mode 100644 schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/filter/LoginFilter.java create mode 100644 schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/redis/RedisConfig.java create mode 100644 schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/redis/RedisUtil.java create mode 100644 schisandra-cloud-storage-gateway/src/main/resources/application.yml create mode 100644 schisandra-cloud-storage-gateway/src/main/resources/bootstrap.yml diff --git a/schisandra-cloud-storage-gateway/pom.xml b/schisandra-cloud-storage-gateway/pom.xml index ef44845..64e2261 100644 --- a/schisandra-cloud-storage-gateway/pom.xml +++ b/schisandra-cloud-storage-gateway/pom.xml @@ -9,10 +9,125 @@ schisandra-cloud-storage-gateway + 8 + 8 + 1.8 UTF-8 + UTF-8 + 2.4.2 + 2021.1 + 2020.0.6 - + + + + org.projectlombok + lombok + 1.18.20 + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + org.springframework.cloud + spring-cloud-starter-gateway + + + org.springframework.cloud + spring-cloud-loadbalancer + + + + cn.dev33 + sa-token-reactor-spring-boot-starter + 1.37.0 + + + + + cn.dev33 + sa-token-redis-jackson + 1.37.0 + + + org.apache.commons + commons-pool2 + + + com.google.code.gson + gson + 2.8.9 + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring-cloud-alibaba.version} + pom + import + + + + + + ${project.artifactId} + + + + org.springframework.boot + spring-boot-maven-plugin + 2.3.0.RELEASE + + + + repackage + + + + + + + + + + central + aliyun maven + http://maven.aliyun.com/nexus/content/groups/public/ + default + + true + + + true + + + diff --git a/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/GatewayApplication.java b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/GatewayApplication.java new file mode 100644 index 0000000..f4405ab --- /dev/null +++ b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/GatewayApplication.java @@ -0,0 +1,19 @@ +package com.schisandra.gateway; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +/** + * 网关启动类 + * + * @author: landaiqing + * @date: 2024/2/7 + */ +@SpringBootApplication +@ComponentScan("com.schisandra") +public class GatewayApplication { + public static void main(String[] args) { + SpringApplication.run(GatewayApplication.class); + } +} diff --git a/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/auth/SaTokenConfigure.java b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/auth/SaTokenConfigure.java new file mode 100644 index 0000000..0ddc1d7 --- /dev/null +++ b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/auth/SaTokenConfigure.java @@ -0,0 +1,32 @@ +package com.schisandra.gateway.auth; + +import cn.dev33.satoken.context.SaHolder; +import cn.dev33.satoken.reactor.filter.SaReactorFilter; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 权限认证的配置器 + * + * @author: landaiqing + */ +@Configuration +public class SaTokenConfigure { + + @Bean + public SaReactorFilter getSaReactorFilter() { + return new SaReactorFilter() + // 拦截地址 + .addInclude("/**") + // 鉴权方法:每次访问进入 + .setAuth(obj -> { + System.out.println("-------- 前端访问path:" + SaHolder.getRequest().getRequestPath()); + // 登录校验 -- 拦截所有路由,并排除/user/doLogin 用于开放登录 + //SaRouter.match("/auth/**", "/auth/user/doLogin", r -> StpUtil.checkRole("admin")); +// SaRouter.match("/oss/**", r -> StpUtil.checkLogin()); +// SaRouter.match("/subject/subject/add", r -> StpUtil.checkPermission("subject:add")); +// SaRouter.match("/subject/**", r -> StpUtil.checkLogin()); + }) + ; + } +} diff --git a/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/auth/StpInterfaceImpl.java b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/auth/StpInterfaceImpl.java new file mode 100644 index 0000000..0e77b9d --- /dev/null +++ b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/auth/StpInterfaceImpl.java @@ -0,0 +1,62 @@ +package com.schisandra.gateway.auth; + +import cn.dev33.satoken.stp.StpInterface; +import com.alibaba.cloud.commons.lang.StringUtils; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.schisandra.gateway.entity.AuthPermission; +import com.schisandra.gateway.entity.AuthRole; +import com.schisandra.gateway.redis.RedisUtil; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 自定义权限验证接口扩展 + * + * @author: landaiqing + */ +@Component +public class StpInterfaceImpl implements StpInterface { + + @Resource + private RedisUtil redisUtil; + + private String authPermissionPrefix = "auth.permission"; + + private String authRolePrefix = "auth.role"; + + @Override + public List getPermissionList(Object loginId, String loginType) { + return getAuth(loginId.toString(), authPermissionPrefix); + } + + @Override + public List getRoleList(Object loginId, String loginType) { + return getAuth(loginId.toString(), authRolePrefix); + } + + private List getAuth(String loginId, String prefix) { + String authKey = redisUtil.buildKey(prefix, loginId.toString()); + String authValue = redisUtil.get(authKey); + if (StringUtils.isBlank(authValue)) { + return Collections.emptyList(); + } + List authList = new LinkedList<>(); + if (authRolePrefix.equals(prefix)) { + List roleList = new Gson().fromJson(authValue, new TypeToken>() { + }.getType()); + authList = roleList.stream().map(AuthRole::getRoleKey).collect(Collectors.toList()); + } else if (authPermissionPrefix.equals(prefix)) { + List permissionList = new Gson().fromJson(authValue, new TypeToken>() { + }.getType()); + authList = permissionList.stream().map(AuthPermission::getPermissionKey).collect(Collectors.toList()); + } + return authList; + } + +} diff --git a/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/entity/AuthPermission.java b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/entity/AuthPermission.java new file mode 100644 index 0000000..8d13f83 --- /dev/null +++ b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/entity/AuthPermission.java @@ -0,0 +1,53 @@ +package com.schisandra.gateway.entity; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * (AuthPermission)实体类 + * + * @author landaiqing + */ +@Data +public class AuthPermission implements Serializable { + private Long id; + + private String name; + + private Long parentId; + + private Integer type; + + private String menuUrl; + + private Integer status; + + private Integer show; + + private String icon; + + private String permissionKey; + /** + * 创建人 + */ + private String createdBy; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 更新人 + */ + private String updateBy; + /** + * 更新时间 + */ + private Date updateTime; + + private Integer isDeleted; + + +} + diff --git a/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/entity/AuthRole.java b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/entity/AuthRole.java new file mode 100644 index 0000000..b61acd6 --- /dev/null +++ b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/entity/AuthRole.java @@ -0,0 +1,42 @@ +package com.schisandra.gateway.entity; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * (AuthRole)实体类 + * + * @author landaiqing + * @since 2024-2-18 18:55:50 + */ +@Data +public class AuthRole implements Serializable { + + private Long id; + + private String roleName; + + private String roleKey; + /** + * 创建人 + */ + private String createdBy; + /** + * 创建时间 + */ + private Date createdTime; + /** + * 更新人 + */ + private String updateBy; + /** + * 更新时间 + */ + private Date updateTime; + + private Integer isDeleted; + +} + diff --git a/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/entity/Result.java b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/entity/Result.java new file mode 100644 index 0000000..5b8713a --- /dev/null +++ b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/entity/Result.java @@ -0,0 +1,59 @@ +package com.schisandra.gateway.entity; + +import com.schisandra.gateway.enums.ResultCodeEnum; +import lombok.Data; + +@Data +public class Result { + + private Boolean success; + + private Integer code; + + private String message; + + private T data; + + public static Result ok(){ + Result result = new Result(); + result.setSuccess(true); + result.setCode(ResultCodeEnum.SUCCESS.getCode()); + result.setMessage(ResultCodeEnum.SUCCESS.getDesc()); + return result; + } + + public static Result ok(T data){ + Result result = new Result(); + result.setSuccess(true); + result.setCode(ResultCodeEnum.SUCCESS.getCode()); + result.setMessage(ResultCodeEnum.SUCCESS.getDesc()); + result.setData(data); + return result; + } + + public static Result fail(){ + Result result = new Result(); + result.setSuccess(false); + result.setCode(ResultCodeEnum.FAIL.getCode()); + result.setMessage(ResultCodeEnum.FAIL.getDesc()); + return result; + } + + public static Result fail(T data){ + Result result = new Result(); + result.setSuccess(false); + result.setCode(ResultCodeEnum.FAIL.getCode()); + result.setMessage(ResultCodeEnum.FAIL.getDesc()); + result.setData(data); + return result; + } + + public static Result fail(Integer code,String message){ + Result result = new Result(); + result.setSuccess(false); + result.setCode(code); + result.setMessage(message); + return result; + } + +} diff --git a/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/enums/ResultCodeEnum.java b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/enums/ResultCodeEnum.java new file mode 100644 index 0000000..3addbda --- /dev/null +++ b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/enums/ResultCodeEnum.java @@ -0,0 +1,24 @@ +package com.schisandra.gateway.enums; + +import lombok.Getter; + +@Getter +public enum ResultCodeEnum { + SUCCESS(200,"成功"), + FAIL(500,"失败"); + private int code; + private String desc; + + ResultCodeEnum(int code,String desc){ + this.code=code; + this.desc=desc; + } + public static ResultCodeEnum getByCode(int codeVal){ + for(ResultCodeEnum resultCodeEnum:ResultCodeEnum.values()){ + if(resultCodeEnum.code==codeVal){ + return resultCodeEnum; + } + } + return null; + } +} diff --git a/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/exception/GatewayExceptionHandler.java b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/exception/GatewayExceptionHandler.java new file mode 100644 index 0000000..9444e35 --- /dev/null +++ b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/exception/GatewayExceptionHandler.java @@ -0,0 +1,55 @@ +package com.schisandra.gateway.exception; + +import cn.dev33.satoken.exception.SaTokenException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.schisandra.gateway.entity.Result; +import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler; +import org.springframework.core.io.buffer.DataBufferFactory; +import org.springframework.http.MediaType; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.http.server.reactive.ServerHttpResponse; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +/** + * @Classname GatewayExceptionHandler + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.club.gateway.exception + * @Author: landaiqing + * @CreateTime: 2024-05-18 17:52 + * @Description: 网关全局异常处理 + * @Version: 1.0 + */ +@Component +public class GatewayExceptionHandler implements ErrorWebExceptionHandler { + private ObjectMapper objectMapper=new ObjectMapper(); + @Override + public Mono handle(ServerWebExchange serverWebExchange, Throwable throwable) { + ServerHttpRequest request = serverWebExchange.getRequest(); + ServerHttpResponse response = serverWebExchange.getResponse(); + Integer code=200; + String message=""; + if(throwable instanceof SaTokenException){ + code=401; + message="用户无权限"; + }else { + code=500; + message="系统繁忙"; + } + Result result = Result.fail(code, message); + response.getHeaders().setContentType(MediaType.APPLICATION_JSON); + return response.writeWith(Mono.fromSupplier(()->{ + DataBufferFactory dataBufferFactory=response.bufferFactory(); + byte[] bytes=null; + try { + bytes = objectMapper.writeValueAsBytes(result); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + return dataBufferFactory.wrap(bytes); + })); + + } +} diff --git a/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/filter/LoginFilter.java b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/filter/LoginFilter.java new file mode 100644 index 0000000..2461c13 --- /dev/null +++ b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/filter/LoginFilter.java @@ -0,0 +1,46 @@ +package com.schisandra.gateway.filter; + +import cn.dev33.satoken.stp.SaTokenInfo; +import cn.dev33.satoken.stp.StpUtil; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +/** + * @Classname LoginFilter + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.club.gateway.filter + * @Author: landaiqing + * @CreateTime: 2024-03-03 17:41 + * @Description: 登录拦截器 + * @Version: 1.0 + */ +@Component +@Slf4j +public class LoginFilter implements GlobalFilter { + @Override + @SneakyThrows + public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { + ServerHttpRequest request = exchange.getRequest(); + ServerHttpRequest.Builder mutate = request.mutate(); + String url = request.getURI().getPath(); + log.info("LoginFilter.filter.url:{}", url); + if (url.equals("/user/doLogin") || url.equals("/user/getUserInfo")) { + return chain.filter(exchange); + } + SaTokenInfo tokenInfo = StpUtil.getTokenInfo(); + String loginId = (String) tokenInfo.getLoginId(); + if (StringUtils.isEmpty(loginId)) { + throw new Exception("未获取到用户信息"); + } + mutate.header("loginId", loginId); + + return chain.filter(exchange.mutate().request(mutate.build()).build()); + } +} diff --git a/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/redis/RedisConfig.java b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/redis/RedisConfig.java new file mode 100644 index 0000000..2e505fb --- /dev/null +++ b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/redis/RedisConfig.java @@ -0,0 +1,49 @@ +package com.schisandra.gateway.redis; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +/** + * @Classname RedisConfig + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.club.gateway.redis + * @Author: landaiqing + * @CreateTime: 2024-02-18 18:10 + * @Description: redis的config处理 + * @Version: 1.0 + */ +@Configuration +public class RedisConfig { + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = new RedisTemplate<>(); + RedisSerializer redisSerializer = new StringRedisSerializer(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + redisTemplate.setKeySerializer(redisSerializer); + redisTemplate.setHashKeySerializer(redisSerializer); + redisTemplate.setValueSerializer(jackson2JsonRedisSerializer()); + redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer()); + return redisTemplate; + } + + private Jackson2JsonRedisSerializer jackson2JsonRedisSerializer() { + Jackson2JsonRedisSerializer jsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); + jsonRedisSerializer.setObjectMapper(objectMapper); + return jsonRedisSerializer; + } + +} diff --git a/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/redis/RedisUtil.java b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/redis/RedisUtil.java new file mode 100644 index 0000000..cf08e0b --- /dev/null +++ b/schisandra-cloud-storage-gateway/src/main/java/com/schisandra/gateway/redis/RedisUtil.java @@ -0,0 +1,107 @@ +package com.schisandra.gateway.redis; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * RedisUtil工具类 + * + * @author: landaiqing + * @date: 2024/2/19 + */ +@Component +@Slf4j +public class RedisUtil { + + @Resource + private RedisTemplate redisTemplate; + + private static final String CACHE_KEY_SEPARATOR = "."; + + /** + * 构建缓存key + */ + public String buildKey(String... strObjs) { + return Stream.of(strObjs).collect(Collectors.joining(CACHE_KEY_SEPARATOR)); + } + + /** + * 是否存在key + */ + public boolean exist(String key) { + return redisTemplate.hasKey(key); + } + + /** + * 删除key + */ + public boolean del(String key) { + return redisTemplate.delete(key); + } + + /** + * set(不带过期) + */ + public void set(String key, String value) { + redisTemplate.opsForValue().set(key, value); + } + + /** + * set(带过期) + */ + public boolean setNx(String key, String value, Long time, TimeUnit timeUnit) { + return redisTemplate.opsForValue().setIfAbsent(key, value, time, timeUnit); + } + + /** + * 获取string类型缓存 + */ + public String get(String key) { + return (String) redisTemplate.opsForValue().get(key); + } + + public Boolean zAdd(String key, String value, Long score) { + return redisTemplate.opsForZSet().add(key, value, Double.valueOf(String.valueOf(score))); + } + + public Long countZset(String key) { + return redisTemplate.opsForZSet().size(key); + } + + public Set rangeZset(String key, long start, long end) { + return redisTemplate.opsForZSet().range(key, start, end); + } + + public Long removeZset(String key, Object value) { + return redisTemplate.opsForZSet().remove(key, value); + } + + public void removeZsetList(String key, Set value) { + value.stream().forEach((val) -> redisTemplate.opsForZSet().remove(key, val)); + } + + public Double score(String key, Object value) { + return redisTemplate.opsForZSet().score(key, value); + } + + public Set rangeByScore(String key, long start, long end) { + return redisTemplate.opsForZSet().rangeByScore(key, Double.valueOf(String.valueOf(start)), Double.valueOf(String.valueOf(end))); + } + + public Object addScore(String key, Object obj, double score) { + return redisTemplate.opsForZSet().incrementScore(key, obj, score); + } + + public Object rank(String key, Object obj) { + return redisTemplate.opsForZSet().rank(key, obj); + } + + +} diff --git a/schisandra-cloud-storage-gateway/src/main/resources/application.yml b/schisandra-cloud-storage-gateway/src/main/resources/application.yml new file mode 100644 index 0000000..0bece70 --- /dev/null +++ b/schisandra-cloud-storage-gateway/src/main/resources/application.yml @@ -0,0 +1,57 @@ +server: + port: 5000 +spring: + cloud: + gateway: + routes: + - id: oss + uri: lb://schisandra-cloud-storage-oss-dev + predicates: + - Path=/oss/** + filters: + - StripPrefix=1 + - id: auth + uri: lb://schisandra-cloud-storage-auth-dev + predicates: + - Path=/auth/** + filters: + - StripPrefix=1 + # redis配置 + redis: + # Redis数据库索引(默认为0) + database: 1 + # Redis服务器地址 + host: 116.196.80.239 + # Redis服务器连接端口 + port: 6379 + # Redis服务器连接密码(默认为空) + password: LDQ20020618xxx + # 连接超时时间 + timeout: 2s + lettuce: + pool: + # 连接池最大连接数 + max-active: 200 + # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-wait: -1ms + # 连接池中的最大空闲连接 + max-idle: 10 + # 连接池中的最小空闲连接 + min-idle: 0 +############## Sa-Token 配置 (文档: https://sa-token.cc) ############## +sa-token: + # token 名称(同时也是 cookie 名称) + token-name: token + # token 有效期(单位:秒) 默认30天,-1 代表永久有效 + timeout: 2592000 + # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结 + active-timeout: -1 + # 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录) + is-concurrent: true + # 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token) + is-share: true + # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik) + token-style: random-32 + # 是否输出操作日志 + is-log: true + token-prefix: schisandra \ No newline at end of file diff --git a/schisandra-cloud-storage-gateway/src/main/resources/bootstrap.yml b/schisandra-cloud-storage-gateway/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..cd94ae5 --- /dev/null +++ b/schisandra-cloud-storage-gateway/src/main/resources/bootstrap.yml @@ -0,0 +1,17 @@ +spring: + application: + name: schisandra-cloud-storage-gateway-dev + profiles: + active: dev + cloud: + nacos: + config: + server-addr: 116.196.80.239:8848 + prefix: ${spring.application.name} + group: DEFAULT_GROUP + namespace: + file-extension: yaml + discovery: + enabled: true + server-addr: 116.196.80.239:8848 + From d6bd07f011df390c5a3e7417cf6512b7a0bec917 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Wed, 8 May 2024 20:01:36 +0800 Subject: [PATCH 23/28] feat: update sms module --- .../SchisandraAuthUserController.java | 4 -- .../controller/SchisandraSmsController.java | 31 +++++++++++++ .../auth/common/config/SmsConfig.java | 44 +++++++++++++++++++ .../src/main/resources/application.yml | 41 ++++------------- 4 files changed, 84 insertions(+), 36 deletions(-) create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraSmsController.java create mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/config/SmsConfig.java diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthUserController.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthUserController.java index d926d01..d70309f 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthUserController.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthUserController.java @@ -1,16 +1,13 @@ package com.schisandra.auth.application.controller; import com.alibaba.fastjson.JSON; -import com.google.common.base.Preconditions; import com.schisandra.auth.application.convert.SchisandraAuthUserDTOConverter; import com.schisandra.auth.application.dto.SchisandraAuthUserDTO; import com.schisandra.auth.common.entity.Result; import com.schisandra.auth.domain.bo.SchisandraAuthUserBO; import com.schisandra.auth.domain.service.SchisandraAuthUserDomainService; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; - import javax.annotation.Resource; /** @@ -28,7 +25,6 @@ import javax.annotation.Resource; public class SchisandraAuthUserController { @Resource private SchisandraAuthUserDomainService schisandraAuthUserDomainService; - /** * @description 更新用户信息 * @param schisandraAuthUserDTO diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraSmsController.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraSmsController.java new file mode 100644 index 0000000..de547d8 --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraSmsController.java @@ -0,0 +1,31 @@ +package com.schisandra.auth.application.controller; + +import lombok.extern.slf4j.Slf4j; +import org.dromara.sms4j.api.SmsBlend; +import org.dromara.sms4j.api.entity.SmsResponse; +import org.dromara.sms4j.core.factory.SmsFactory; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Classname SchisandraSmsController + * @BelongsProject: schisandra-cloud-storage + * @BelongsPackage: com.schisandra.auth.application.controller + * @Author: landaiqing + * @CreateTime: 2024-05-08 01:41 + * @Description: TODO + * @Version: 1.0 + */ +@RestController +@RequestMapping("/sms/") +@Slf4j +public class SchisandraSmsController { + + @GetMapping("send") + public SmsResponse send(String phone){ + SmsBlend smsBlend =SmsFactory.getSmsBlend(); + return smsBlend.sendMessage(phone, "1234"); + } +} diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/config/SmsConfig.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/config/SmsConfig.java new file mode 100644 index 0000000..fb8d835 --- /dev/null +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/config/SmsConfig.java @@ -0,0 +1,44 @@ +package com.schisandra.auth.common.config; + +import org.dromara.sms4j.aliyun.config.AlibabaConfig; +import org.dromara.sms4j.core.datainterface.SmsReadConfig; +import org.dromara.sms4j.provider.config.BaseConfig; +import org.dromara.sms4j.unisms.config.UniConfig; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @Classname SmsConfig + * @BelongsProject: schisandra-cloud-storage + * @BelongsPackage: com.schisandra.auth.common.config + * @Author: landaiqing + * @CreateTime: 2024-05-08 18:46 + * @Description: TODO + * @Version: 1.0 + */ +@Component +public class SmsConfig implements SmsReadConfig { + + //这里的configId指的是框架在调用该接口方法时候会传递进来的参数,用户可以根据此参数作为标准来动态的进行查询 + @Override + public BaseConfig getSupplierConfig(String configId) { + + AlibabaConfig alibabaConfig=new AlibabaConfig(); + alibabaConfig.setConfigId("alibaba"); + alibabaConfig.setRequestUrl("dysmsapi.aliyuncs.com"); + alibabaConfig.setAccessKeyId("LTAI5tDy2edL9LhW43rnus69"); + alibabaConfig.setAccessKeySecret("YWp44dcFrBICrjZgqvJBE7ZHArZfIP"); + alibabaConfig.setSignature("阿里云短信测试"); + alibabaConfig.setTemplateId("SMS_154950909"); + alibabaConfig.setTemplateName("code"); + alibabaConfig.setSdkAppId("sms"); + return alibabaConfig; + } + + @Override + public List getSupplierConfigList() { + //此处仅为示例,实际环境中,数据可以来自任意位置, + return null; + } +} diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml index 45abcf5..4cdce4b 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml @@ -70,36 +70,13 @@ sa-token: is-log: true token-prefix: schisandra -#sms: -# # 标注从yml读取配置 -# config-type: yaml -# blends: -# # 自定义的标识,也就是configId这里可以是任意值(最好不要是中文) -# tx1: -# #厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分 -# supplier: tencent -# #您的accessKey -# access-key-id: 您的accessKey -# #您的accessKeySecret -# access-key-secret: 您的accessKeySecret -# #您的短信签名 -# signature: 您的短信签名 -# #模板ID 非必须配置,如果使用sendMessage的快速发送需此配置 -# template-id: xxxxxxxx -# #您的sdkAppId -# sdk-app-id: 您的sdkAppId -# # 自定义的标识,也就是configId这里可以是任意值(最好不要是中文) -# tx2: -# #厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分 -# supplier: tencent -# #您的accessKey -# access-key-id: 您的accessKey -# #您的accessKeySecret -# access-key-secret: 您的accessKeySecret -# #您的短信签名 -# signature: 您的短信签名 -# #模板ID 非必须配置,如果使用sendMessage的快速发送需此配置 -# template-id: xxxxxxxx -# #您的sdkAppId -# sdk-app-id: 您的sdkAppId +sms: + # 标注从yml读取配置 + config-type: interface + restricted: true + accountMax: 10 + minuteMax: 1 + isPrint: false + HttpLog: true + From 5aad20da2c9c631743843a4a44f7647246cb748c Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Wed, 8 May 2024 23:12:38 +0800 Subject: [PATCH 24/28] feat: update --- .../controller/SchisandraSmsController.java | 31 ------------- .../auth/common/config/SmsConfig.java | 44 ------------------- 2 files changed, 75 deletions(-) delete mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraSmsController.java delete mode 100644 schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/config/SmsConfig.java diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraSmsController.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraSmsController.java deleted file mode 100644 index de547d8..0000000 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraSmsController.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.schisandra.auth.application.controller; - -import lombok.extern.slf4j.Slf4j; -import org.dromara.sms4j.api.SmsBlend; -import org.dromara.sms4j.api.entity.SmsResponse; -import org.dromara.sms4j.core.factory.SmsFactory; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @Classname SchisandraSmsController - * @BelongsProject: schisandra-cloud-storage - * @BelongsPackage: com.schisandra.auth.application.controller - * @Author: landaiqing - * @CreateTime: 2024-05-08 01:41 - * @Description: TODO - * @Version: 1.0 - */ -@RestController -@RequestMapping("/sms/") -@Slf4j -public class SchisandraSmsController { - - @GetMapping("send") - public SmsResponse send(String phone){ - SmsBlend smsBlend =SmsFactory.getSmsBlend(); - return smsBlend.sendMessage(phone, "1234"); - } -} diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/config/SmsConfig.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/config/SmsConfig.java deleted file mode 100644 index fb8d835..0000000 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-common/src/main/java/com/schisandra/auth/common/config/SmsConfig.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.schisandra.auth.common.config; - -import org.dromara.sms4j.aliyun.config.AlibabaConfig; -import org.dromara.sms4j.core.datainterface.SmsReadConfig; -import org.dromara.sms4j.provider.config.BaseConfig; -import org.dromara.sms4j.unisms.config.UniConfig; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * @Classname SmsConfig - * @BelongsProject: schisandra-cloud-storage - * @BelongsPackage: com.schisandra.auth.common.config - * @Author: landaiqing - * @CreateTime: 2024-05-08 18:46 - * @Description: TODO - * @Version: 1.0 - */ -@Component -public class SmsConfig implements SmsReadConfig { - - //这里的configId指的是框架在调用该接口方法时候会传递进来的参数,用户可以根据此参数作为标准来动态的进行查询 - @Override - public BaseConfig getSupplierConfig(String configId) { - - AlibabaConfig alibabaConfig=new AlibabaConfig(); - alibabaConfig.setConfigId("alibaba"); - alibabaConfig.setRequestUrl("dysmsapi.aliyuncs.com"); - alibabaConfig.setAccessKeyId("LTAI5tDy2edL9LhW43rnus69"); - alibabaConfig.setAccessKeySecret("YWp44dcFrBICrjZgqvJBE7ZHArZfIP"); - alibabaConfig.setSignature("阿里云短信测试"); - alibabaConfig.setTemplateId("SMS_154950909"); - alibabaConfig.setTemplateName("code"); - alibabaConfig.setSdkAppId("sms"); - return alibabaConfig; - } - - @Override - public List getSupplierConfigList() { - //此处仅为示例,实际环境中,数据可以来自任意位置, - return null; - } -} From 3225544b74b13f19c375e64c24969fe16b2b4bfc Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Thu, 9 May 2024 01:29:37 +0800 Subject: [PATCH 25/28] feat: update --- .../controller/SchisandraAuthPermissionController.java | 2 +- .../service/SchisandraAuthPermissionDomainService.java | 2 +- .../domain/service/SchisandraAuthUserDomainService.java | 2 +- .../impl/SchisandraAuthPermissionDomainServiceImpl.java | 5 +++-- .../service/impl/SchisandraAuthUserDomainServiceImpl.java | 5 +++-- .../src/main/resources/application.yml | 6 ++++++ 6 files changed, 15 insertions(+), 7 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthPermissionController.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthPermissionController.java index 7c1859c..7bc7aed 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthPermissionController.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthPermissionController.java @@ -64,7 +64,7 @@ public class SchisandraAuthPermissionController { } } /** - * @description:查询权限信息 + * @description: 查询权限信息 * @param: [schisandraAuthPermissionDTO] * @return: com.schisandra.auth.common.entity.Result * @author zlg diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthPermissionDomainService.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthPermissionDomainService.java index 7091ab2..a58509e 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthPermissionDomainService.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthPermissionDomainService.java @@ -8,6 +8,6 @@ public interface SchisandraAuthPermissionDomainService { Object update(SchisandraAuthPermissionBO schisandraAuthPermissionBO); Object delete(SchisandraAuthPermissionBO schisandraAuthPermissionBO); Object insert(SchisandraAuthPermissionBO schisandraAuthPermissionBO); - SchisandraAuthPermission select(SchisandraAuthPermissionBO schisandraAuthPermissionBO); + SchisandraAuthPermissionBO select(SchisandraAuthPermissionBO schisandraAuthPermissionBO); } diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthUserDomainService.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthUserDomainService.java index 374997f..276339f 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthUserDomainService.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthUserDomainService.java @@ -27,7 +27,7 @@ public interface SchisandraAuthUserDomainService { * @author msz * @return com.schisandra.auth.infra.basic.entity.SchisandraAuthUser */ - SchisandraAuthUser queryById(SchisandraAuthUserBO schisandraAuthUserBO); + SchisandraAuthUserBO queryById(SchisandraAuthUserBO schisandraAuthUserBO); /** * @description 添加用户信息 * @param schisandraAuthUserBO diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthPermissionDomainServiceImpl.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthPermissionDomainServiceImpl.java index 4c4a107..05df5fe 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthPermissionDomainServiceImpl.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthPermissionDomainServiceImpl.java @@ -62,11 +62,12 @@ public class SchisandraAuthPermissionDomainServiceImpl implements SchisandraAuth * @date: 2024/4/17 17:07 */ @Override - public SchisandraAuthPermission select(SchisandraAuthPermissionBO schisandraAuthPermissionBO) { + public SchisandraAuthPermissionBO select(SchisandraAuthPermissionBO schisandraAuthPermissionBO) { SchisandraAuthPermission schisandraAuthPermission = SchisandraAuthPermissionBOConverter.INSTANCE.convertBOToEntity(schisandraAuthPermissionBO); SchisandraAuthPermission schisandraAuthPermission1 =schisandraAuthPermissionService.queryById(schisandraAuthPermission.getId()); - return schisandraAuthPermission1; + SchisandraAuthPermissionBO schisandraAuthPermissionBO1 = SchisandraAuthPermissionBOConverter.INSTANCE.convertEntityToBO(schisandraAuthPermission1); + return schisandraAuthPermissionBO1; } } diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthUserDomainServiceImpl.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthUserDomainServiceImpl.java index 2a5418b..4fa075a 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthUserDomainServiceImpl.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthUserDomainServiceImpl.java @@ -38,9 +38,10 @@ public class SchisandraAuthUserDomainServiceImpl implements SchisandraAuthUserDo * @date 2024/4/3 22:10 */ @Override - public SchisandraAuthUser queryById(SchisandraAuthUserBO schisandraAuthUserBO) { + public SchisandraAuthUserBO queryById(SchisandraAuthUserBO schisandraAuthUserBO) { SchisandraAuthUser schisandraAuthUser = schisandraAuthUserService.queryById(schisandraAuthUserBO.getId()); - return schisandraAuthUser; + SchisandraAuthUserBO schisandraAuthUserBO1 = SchisandraAuthUserBOConverter.INSTANCE.convertEntityToBO(schisandraAuthUser); + return schisandraAuthUserBO1; } /** * @description 添加用户信息 diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml index fe8dc08..0b80520 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml @@ -69,6 +69,7 @@ sa-token: # 是否输出操作日志 is-log: true token-prefix: schisandra + is-print: false sms: # 标注从yml读取配置 @@ -79,4 +80,9 @@ sms: isPrint: false HttpLog: true +# mybatis-plus日志 +mybatis-plus: + global-config: + banner: false + From 3bfb5294f61e5866665f1d355ff053109675b8a7 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Thu, 9 May 2024 01:31:43 +0800 Subject: [PATCH 26/28] feat: update --- .../{SmsController.java => SchisandraSmsController.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/{SmsController.java => SchisandraSmsController.java} (97%) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SmsController.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraSmsController.java similarity index 97% rename from schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SmsController.java rename to schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraSmsController.java index 9bea211..db7f73a 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SmsController.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraSmsController.java @@ -18,7 +18,7 @@ import static java.util.concurrent.TimeUnit.SECONDS; @RestController @RequestMapping("/sms/") @Slf4j -public class SmsController { +public class SchisandraSmsController { @Resource private RedisUtil redisUtil; From 73628f66ea1d8b0b61c7da71b826c02360807bb1 Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Thu, 9 May 2024 02:16:24 +0800 Subject: [PATCH 27/28] feat: update --- .../src/main/resources/banner.txt | 2 +- .../src/main/resources/log4j2-spring.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/banner.txt b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/banner.txt index 390516c..a8184f3 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/banner.txt +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/banner.txt @@ -1,4 +1,4 @@ -${AnsiColor.GREEN} + ,---, ,--.' | ,--, ,---, diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/log4j2-spring.xml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/log4j2-spring.xml index 2acdb03..04b62c0 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/log4j2-spring.xml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/log4j2-spring.xml @@ -7,10 +7,10 @@ - + - + From 238a61a9643d5eb5f0a17805b0ae7a5b32d98fcc Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Thu, 9 May 2024 02:21:19 +0800 Subject: [PATCH 28/28] feat: update --- .../src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml index 0b80520..e0b1bbc 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-starter/src/main/resources/application.yml @@ -67,7 +67,7 @@ sa-token: # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik) token-style: random-32 # 是否输出操作日志 - is-log: true + is-log: false token-prefix: schisandra is-print: false