diff --git a/app-service/pom.xml b/app-service/pom.xml index a536153..a07f263 100644 --- a/app-service/pom.xml +++ b/app-service/pom.xml @@ -110,6 +110,7 @@ org.springframework.boot spring-boot-starter-data-redis + 2.5.4 diff --git a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/securityVO/CaptchaVO.java b/app-service/src/main/java/com/depsystem/app/loginServer/CaptchaVO.java similarity index 78% rename from app-service/src/main/java/com/depsystem/app/systemServer/securityServer/securityVO/CaptchaVO.java rename to app-service/src/main/java/com/depsystem/app/loginServer/CaptchaVO.java index c64261b..4bbb5cd 100644 --- a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/securityVO/CaptchaVO.java +++ b/app-service/src/main/java/com/depsystem/app/loginServer/CaptchaVO.java @@ -5,7 +5,7 @@ * @apiNote */ -package com.depsystem.app.systemServer.securityServer.securityVO; +package com.depsystem.app.loginServer; import lombok.Data; diff --git a/app-service/src/main/java/com/depsystem/app/systemServer/util/Cache.java b/app-service/src/main/java/com/depsystem/app/systemServer/util/Cache.java new file mode 100644 index 0000000..69c4743 --- /dev/null +++ b/app-service/src/main/java/com/depsystem/app/systemServer/util/Cache.java @@ -0,0 +1,221 @@ +/** + * @author JOJO + * @class Cache + * @date 2023/4/24 + * @apiNote + */ + +package com.depsystem.app.systemServer.util; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.util.StringUtils; + +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.concurrent.TimeUnit; + +public class Cache { + @Autowired + private StringRedisTemplate redisTemplate; + + private final String DEFAULT_KEY_PREFIX = ""; + private final int EXPIRE_TIME = 1; + private final TimeUnit EXPIRE_TIME_TYPE = TimeUnit.DAYS; + + + /** + * 数据缓存至redis + * + * @param key + * @param value + * @return + */ + public void add(K key, V value) { + try { + if (value != null) { + redisTemplate + .opsForValue() + .set(DEFAULT_KEY_PREFIX + key, JSON.toJSONString(value)); + } + } catch (Exception e) { + throw new RuntimeException("数据缓存至redis失败"+ e.getMessage()); + } + } + + /** + * 数据缓存至redis并设置过期时间 + * + * @param key + * @param value + * @return + */ + public void add(K key, V value, int timeout, TimeUnit unit) { + try { + if (redisTemplate == null){ + if (value != null) { + redisTemplate + .opsForValue() + .set(DEFAULT_KEY_PREFIX + key, JSON.toJSONString(value), timeout, unit); + } + } + + } catch (Exception e) { + throw new RuntimeException("数据缓存至redis失败"); + } + } + + /** + * 写入 hash-set,已经是key-value的键值,不能再写入为hash-set + * + * @param key must not be {@literal null}. + * @param subKey must not be {@literal null}. + * @param value 写入的值 + */ + public void addHashCache(K key, SK subKey, V value) { + redisTemplate.opsForHash().put(DEFAULT_KEY_PREFIX + key, subKey, value); + } + + /** + * 写入 hash-set,并设置过期时间 + * + * @param key must not be {@literal null}. + * @param subKey must not be {@literal null}. + * @param value 写入的值 + */ + public void addHashCache(K key, SK subKey, V value, long timeout, TimeUnit unit) { + redisTemplate.opsForHash().put(DEFAULT_KEY_PREFIX + key, subKey, value); + redisTemplate.expire(DEFAULT_KEY_PREFIX + key, timeout, unit); + } + + /** + * 获取 hash-setvalue + * + * @param key must not be {@literal null}. + * @param subKey must not be {@literal null}. + */ + public Object getHashCache(K key, SK subKey) { + return redisTemplate.opsForHash().get(DEFAULT_KEY_PREFIX + key, subKey); + } + + + /** + * 从redis中获取缓存数据,转成对象 + * + * @param key must not be {@literal null}. + * @param clazz 对象类型 + * + */ + public V getObject(K key, Class clazz) { + String value = this.get(key); + V result = null; + if (!StringUtils.isEmpty(value)) { + result = JSONObject.parseObject(value, clazz); + } + return result; + } + + /** + * 从redis中获取缓存数据,转成list + * + * @param key must not be {@literal null}. + * @param clazz 对象类型 + * @return + */ + public List getList(K key, Class clazz) { + String value = this.get(key); + List result = Collections.emptyList(); + if (!StringUtils.isEmpty(value)) { + result = JSONArray.parseArray(value, clazz); + } + return result; + } + + /** + * 功能描述:Get the value of {@code key}. + * + * @param key must not be {@literal null}. + * @return java.lang.String + * @date 2021/9/19 + **/ + public String get(K key) { + String value; + try { + value = redisTemplate.opsForValue().get(DEFAULT_KEY_PREFIX + key); + } catch (Exception e) { + throw new RuntimeException("从redis缓存中获取缓存数据失败"); + } + return value; + } + + /** + * 删除key + */ + public void delete(String key) { + redisTemplate.delete(key); + } + + /** + * 批量删除key + */ + public void delete(Collection keys) { + redisTemplate.delete(keys); + } + + /** + * 序列化key + */ + public byte[] dump(String key) { + return redisTemplate.dump(key); + } + + /** + * 是否存在key + */ + public Boolean hasKey(String key) { + return redisTemplate.hasKey(key); + } + + /** + * 设置过期时间 + */ + public Boolean expire(String key, long timeout, TimeUnit unit) { + return redisTemplate.expire(key, timeout, unit); + } + + /** + * 设置过期时间 + */ + public Boolean expireAt(String key, Date date) { + return redisTemplate.expireAt(key, date); + } + + + /** + * 移除 key 的过期时间,key 将持久保持 + */ + public Boolean persist(String key) { + return redisTemplate.persist(key); + } + + /** + * 返回 key 的剩余的过期时间 + */ + public Long getExpire(String key, TimeUnit unit) { + return redisTemplate.getExpire(key, unit); + } + + /** + * 返回 key 的剩余的过期时间 + */ + public Long getExpire(String key) { + return redisTemplate.getExpire(key); + } +} diff --git a/app-service/src/main/java/com/depsystem/app/systemServer/util/CacheUtil.java b/app-service/src/main/java/com/depsystem/app/systemServer/util/CacheUtil.java new file mode 100644 index 0000000..a6cb199 --- /dev/null +++ b/app-service/src/main/java/com/depsystem/app/systemServer/util/CacheUtil.java @@ -0,0 +1,514 @@ +/** + * @author JOJO + * @class CacheUtil + * @date 2023/4/24 + * @apiNote + */ + +package com.depsystem.app.systemServer.util; + +import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + + +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * @author youxin + * @program redis-study + * @description redis常用工具类 + * @date 2021-11-22 17:24 + */ +@Component +public class CacheUtil { + + @Resource + @Qualifier("myRedisTemplate") + private RedisTemplate redisTemplate; + // =============================common============================ + /** + * 指定缓存失效时间 + * @param key 键 + * @param time 时间(秒) + * @return + */ + public boolean expire(String key, long time) { + try { + if (time > 0) { + redisTemplate.expire(key, time, TimeUnit.SECONDS); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 根据key 获取过期时间 + * @param key 键 不能为null + * @return 时间(秒) 返回0代表为永久有效 + */ + public long getExpire(String key) { + return redisTemplate.getExpire(key, TimeUnit.SECONDS); + } + /** + * 判断key是否存在 + * @param key 键 + * @return true 存在 false不存在 + */ + public boolean hasKey(String key) { + try { + return redisTemplate.hasKey(key); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 删除缓存 + * @param key 可以传一个值 或多个 + */ + @SuppressWarnings("unchecked") + public void del(String... key) { + if (key != null && key.length > 0) { + if (key.length == 1) { + redisTemplate.delete(key[0]); + } else { + redisTemplate.delete((Collection) CollectionUtils.arrayToList(key)); + } + } + } + // ============================String============================= + /** + * 普通缓存获取 + * @param key 键 + * @return 值 + */ + public Object get(String key) { + return key == null ? null : redisTemplate.opsForValue().get(key); + } + /** + * 普通缓存放入 + * @param key 键 + * @param value 值 + * @return true成功 false失败 + */ + public boolean set(String key, Object value) { + try { + redisTemplate.opsForValue().set(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 普通缓存放入并设置时间 + * @param key 键 + * @param value 值 + * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 + * @return true成功 false 失败 + */ + public boolean set(String key, Object value, long time) { + try { + if (time > 0) { + redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); + } else { + set(key, value); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 递增 + * @param key 键 + * @param delta 要增加几(大于0) + * @return + */ + public long incr(String key, long delta) { + if (delta < 0) { + throw new RuntimeException("递增因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, delta); + } + /** + * 递减 + * @param key 键 + * @param delta 要减少几(小于0) + * @return + */ + public long decr(String key, long delta) { + if (delta < 0) { + throw new RuntimeException("递减因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, -delta); + } + // ================================Map================================= + /** + * HashGet + * @param key 键 不能为null + * @param item 项 不能为null + * @return 值 + */ + public Object hget(String key, String item) { + return redisTemplate.opsForHash().get(key, item); + } + /** + * 获取hashKey对应的所有键值 + * @param key 键 + * @return 对应的多个键值 + */ + public Map hmget(String key) { + return redisTemplate.opsForHash().entries(key); + } + /** + * HashSet + * @param key 键 + * @param map 对应多个键值 + * @return true 成功 false 失败 + */ + public boolean hmset(String key, Map map) { + try { + redisTemplate.opsForHash().putAll(key, map); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * HashSet 并设置时间 + * @param key 键 + * @param map 对应多个键值 + * @param time 时间(秒) + * @return true成功 false失败 + */ + public boolean hmset(String key, Map map, long time) { + try { + redisTemplate.opsForHash().putAll(key, map); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 向一张hash表中放入数据,如果不存在将创建 + * @param key 键 + * @param item 项 + * @param value 值 + * @return true 成功 false失败 + */ + public boolean hset(String key, String item, Object value) { + try { + redisTemplate.opsForHash().put(key, item, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 向一张hash表中放入数据,如果不存在将创建 + * @param key 键 + * @param item 项 + * @param value 值 + * @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间 + * @return true 成功 false失败 + */ + public boolean hset(String key, String item, Object value, long time) { + try { + redisTemplate.opsForHash().put(key, item, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 删除hash表中的值 + * @param key 键 不能为null + * @param item 项 可以使多个 不能为null + */ + public void hdel(String key, Object... item) { + redisTemplate.opsForHash().delete(key, item); + } + /** + * 判断hash表中是否有该项的值 + * @param key 键 不能为null + * @param item 项 不能为null + * @return true 存在 false不存在 + */ + public boolean hHasKey(String key, String item) { + return redisTemplate.opsForHash().hasKey(key, item); + } + /** + * hash递增 如果不存在,就会创建一个 并把新增后的值返回 + * @param key 键 + * @param item 项 + * @param by 要增加几(大于0) + * @return + */ + public double hincr(String key, String item, double by) { + return redisTemplate.opsForHash().increment(key, item, by); + } + /** + * hash递减 + * @param key 键 + * @param item 项 + * @param by 要减少记(小于0) + * @return + */ + public double hdecr(String key, String item, double by) { + return redisTemplate.opsForHash().increment(key, item, -by); + } + // ============================set============================= + /** + * 根据key获取Set中的所有值 + * @param key 键 + * @return + */ + public Set sGet(String key) { + try { + return redisTemplate.opsForSet().members(key); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + /** + * 根据value从一个set中查询,是否存在 + * @param key 键 + * @param value 值 + * @return true 存在 false不存在 + */ + public boolean sHasKey(String key, Object value) { + try { + return redisTemplate.opsForSet().isMember(key, value); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 将数据放入set缓存 + * @param key 键 + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSet(String key, Object... values) { + try { + return redisTemplate.opsForSet().add(key, values); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + /** + * 将set数据放入缓存 + * @param key 键 + * @param time 时间(秒) + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSetAndTime(String key, long time, Object... values) { + try { + Long count = redisTemplate.opsForSet().add(key, values); + if (time > 0) { + expire(key, time); + } + return count; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + /** + * 获取set缓存的长度 + * @param key 键 + * @return + */ + public long sGetSetSize(String key) { + try { + return redisTemplate.opsForSet().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + /** + * 移除值为value的 + * @param key 键 + * @param values 值 可以是多个 + * @return 移除的个数 + */ + public long setRemove(String key, Object... values) { + try { + Long count = redisTemplate.opsForSet().remove(key, values); + return count; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + // ===============================list================================= + /** + * 获取list缓存的内容 + * @param key 键 + * @param start 开始 + * @param end 结束 0 到 -1代表所有值 + * @return + */ + public List lGet(String key, long start, long end) { + try { + return redisTemplate.opsForList().range(key, start, end); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + /** + * 获取list缓存的长度 + * @param key 键 + * @return + */ + public long lGetListSize(String key) { + try { + return redisTemplate.opsForList().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + /** + * 通过索引 获取list中的值 + * @param key 键 + * @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推 + * @return + */ + public Object lGetIndex(String key, long index) { + try { + return redisTemplate.opsForList().index(key, index); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @return + */ + public boolean lSet(String key, Object value) { + try { + redisTemplate.opsForList().rightPush(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, Object value, long time) { + try { + redisTemplate.opsForList().rightPush(key, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @return + */ + public boolean lSet(String key, List value) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 将list放入缓存 + * + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, List value, long time) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 根据索引修改list中的某条数据 + * @param key 键 + * @param index 索引 + * @param value 值 + * @return + */ + public boolean lUpdateIndex(String key, long index, Object value) { + try { + redisTemplate.opsForList().set(key, index, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 移除N个值为value + * @param key 键 + * @param count 移除多少个 + * @param value 值 + * @return 移除的个数 + */ + public long lRemove(String key, long count, Object value) { + try { + Long remove = redisTemplate.opsForList().remove(key, count, value); + return remove; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } +} \ No newline at end of file diff --git a/app-start/pom.xml b/app-start/pom.xml index 3108a0e..4c246d9 100644 --- a/app-start/pom.xml +++ b/app-start/pom.xml @@ -28,6 +28,11 @@ org.springframework spring-test + + + org.springframework.boot + spring-boot-autoconfigure + diff --git a/app-start/src/main/java/com/depsystem/app/securityServer/RedisConfig.java b/app-start/src/main/java/com/depsystem/app/securityServer/RedisConfig.java new file mode 100644 index 0000000..2c360e0 --- /dev/null +++ b/app-start/src/main/java/com/depsystem/app/securityServer/RedisConfig.java @@ -0,0 +1,65 @@ +/** + * @author JOJO + * @class RedisConfig + * @date 2023/4/24 + * @apiNote + */ + +package com.depsystem.app.securityServer; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisStandaloneConfiguration; +import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializer; + +@Configuration +public class RedisConfig { + + //@Bean(name = "myRedisTemplate") + //public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory){ + // //创建RedisTemplate对象 + // RedisTemplate template = new RedisTemplate<>(); + // //设置连接工厂 + // template.setConnectionFactory(connectionFactory); + // //创建JSON序列化工具 + // GenericJackson2JsonRedisSerializer jsonRedisSerializer=new GenericJackson2JsonRedisSerializer(); + // //设置Key的序列化 + // template.setKeySerializer(RedisSerializer.string()); + // template.setHashKeySerializer(RedisSerializer.string()); + // //设置value的序列化 + // template.setValueSerializer(jsonRedisSerializer); + // template.setHashValueSerializer(jsonRedisSerializer); + // //返回 + // return template; + //} + + @Bean + public RedisConnectionFactory redisConnectionFactory() { + RedisStandaloneConfiguration controlRedis = new RedisStandaloneConfiguration(); + controlRedis.setDatabase(0); + controlRedis.setPassword("adiao"); + controlRedis.setPort(6379); + controlRedis.setHostName("47.113.147.38"); + return new LettuceConnectionFactory(controlRedis); + } + + @Bean + public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) { + StringRedisTemplate template = new StringRedisTemplate(); + template.setConnectionFactory(redisConnectionFactory); + return template; + } + + //@Bean("stringRedis") + //public StringRedisTemplate stringRedisTemplate() { + // RedisConnectionFactory factory = new LettuceConnectionFactory("localhost", 6379); + // return new StringRedisTemplate(factory); + //} + + +} diff --git a/app-service/src/main/java/com/depsystem/app/systemServer/config/WebSecurityConfig.java b/app-start/src/main/java/com/depsystem/app/securityServer/WebSecurityConfig.java similarity index 91% rename from app-service/src/main/java/com/depsystem/app/systemServer/config/WebSecurityConfig.java rename to app-start/src/main/java/com/depsystem/app/securityServer/WebSecurityConfig.java index b7a0be0..2e54113 100644 --- a/app-service/src/main/java/com/depsystem/app/systemServer/config/WebSecurityConfig.java +++ b/app-start/src/main/java/com/depsystem/app/securityServer/WebSecurityConfig.java @@ -5,12 +5,14 @@ * @apiNote */ -package com.depsystem.app.systemServer.config; +package com.depsystem.app.securityServer; import cn.hutool.json.JSONUtil; -import com.depsystem.app.systemServer.securityServer.securityFilter.AuthenticationServerImpl; -import com.depsystem.app.systemServer.securityServer.handler.AuthenticationsFailureHandler; -import com.depsystem.app.systemServer.securityServer.handler.AuthenticationsSuccessHandler; + + +import com.depsystem.app.securityServer.handler.AuthenticationsFailureHandler; +import com.depsystem.app.securityServer.handler.AuthenticationsSuccessHandler; +import com.depsystem.app.securityServer.securityFilter.AuthenticationServerImpl; import com.depsystem.app.systemServer.util.ResponseResult; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; diff --git a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/entity/MyUser.java b/app-start/src/main/java/com/depsystem/app/securityServer/entity/MyUser.java similarity index 87% rename from app-service/src/main/java/com/depsystem/app/systemServer/securityServer/entity/MyUser.java rename to app-start/src/main/java/com/depsystem/app/securityServer/entity/MyUser.java index 8a057b9..78b0a09 100644 --- a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/entity/MyUser.java +++ b/app-start/src/main/java/com/depsystem/app/securityServer/entity/MyUser.java @@ -5,7 +5,7 @@ * @apiNote */ -package com.depsystem.app.systemServer.securityServer.entity; +package com.depsystem.app.securityServer.entity; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.User; diff --git a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/entity/MyUserDetails.java b/app-start/src/main/java/com/depsystem/app/securityServer/entity/MyUserDetails.java similarity index 96% rename from app-service/src/main/java/com/depsystem/app/systemServer/securityServer/entity/MyUserDetails.java rename to app-start/src/main/java/com/depsystem/app/securityServer/entity/MyUserDetails.java index 6307fd6..4a054e4 100644 --- a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/entity/MyUserDetails.java +++ b/app-start/src/main/java/com/depsystem/app/securityServer/entity/MyUserDetails.java @@ -5,11 +5,10 @@ * @apiNote */ -package com.depsystem.app.systemServer.securityServer.entity; +package com.depsystem.app.securityServer.entity; import com.alibaba.fastjson2.annotation.JSONField; import com.depsystem.app.loginServer.Login; -import jakarta.annotation.Nullable; import jakarta.annotation.Resource; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/exception/CaptchaVerifyException.java b/app-start/src/main/java/com/depsystem/app/securityServer/exception/CaptchaVerifyException.java similarity index 86% rename from app-service/src/main/java/com/depsystem/app/systemServer/securityServer/exception/CaptchaVerifyException.java rename to app-start/src/main/java/com/depsystem/app/securityServer/exception/CaptchaVerifyException.java index 559b8ce..f5d26eb 100644 --- a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/exception/CaptchaVerifyException.java +++ b/app-start/src/main/java/com/depsystem/app/securityServer/exception/CaptchaVerifyException.java @@ -5,7 +5,7 @@ * @apiNote */ -package com.depsystem.app.systemServer.securityServer.exception; +package com.depsystem.app.securityServer.exception; import org.springframework.security.core.AuthenticationException; diff --git a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/handler/AuthenticationsFailureHandler.java b/app-start/src/main/java/com/depsystem/app/securityServer/handler/AuthenticationsFailureHandler.java similarity index 93% rename from app-service/src/main/java/com/depsystem/app/systemServer/securityServer/handler/AuthenticationsFailureHandler.java rename to app-start/src/main/java/com/depsystem/app/securityServer/handler/AuthenticationsFailureHandler.java index ca70cb4..37387e0 100644 --- a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/handler/AuthenticationsFailureHandler.java +++ b/app-start/src/main/java/com/depsystem/app/securityServer/handler/AuthenticationsFailureHandler.java @@ -5,7 +5,7 @@ * @apiNote */ -package com.depsystem.app.systemServer.securityServer.handler; +package com.depsystem.app.securityServer.handler; import cn.hutool.json.JSONUtil; import com.depsystem.app.systemServer.util.ResponseResult; diff --git a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/handler/AuthenticationsSuccessHandler.java b/app-start/src/main/java/com/depsystem/app/securityServer/handler/AuthenticationsSuccessHandler.java similarity index 89% rename from app-service/src/main/java/com/depsystem/app/systemServer/securityServer/handler/AuthenticationsSuccessHandler.java rename to app-start/src/main/java/com/depsystem/app/securityServer/handler/AuthenticationsSuccessHandler.java index a6ea4b4..8a3a6b2 100644 --- a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/handler/AuthenticationsSuccessHandler.java +++ b/app-start/src/main/java/com/depsystem/app/securityServer/handler/AuthenticationsSuccessHandler.java @@ -5,11 +5,11 @@ * @apiNote */ -package com.depsystem.app.systemServer.securityServer.handler; +package com.depsystem.app.securityServer.handler; -import com.depsystem.app.systemServer.securityServer.entity.MyUserDetails; +import com.depsystem.app.securityServer.entity.MyUserDetails; +import com.depsystem.app.systemServer.util.CacheUtil; import com.depsystem.app.systemServer.util.JwtUtil; -import com.depsystem.app.systemServer.util.RedisUtil; import com.depsystem.app.systemServer.util.ResponseResult; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.ServletException; @@ -17,6 +17,7 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; + import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -27,6 +28,10 @@ import java.util.Map; * @author adiao */ public class AuthenticationsSuccessHandler implements AuthenticationSuccessHandler { + + + CacheUtil redisUtil = new CacheUtil(); + /** * @param request 请求 * @param response 响应 @@ -52,7 +57,7 @@ public class AuthenticationsSuccessHandler implements AuthenticationSuccessHandl userinfo.put("name",principal.getUsername()); userinfo.put("role",principal.getRoles()); userinfo.put("path",principal.getPath().toString()); - RedisUtil redisUtil = new RedisUtil(); + //RedisUtil redisUtil = new RedisUtil(); redisUtil.set("userinfo:",userinfo); response.setCharacterEncoding("utf-8"); diff --git a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/securityFilter/AuthenticationServerImpl.java b/app-start/src/main/java/com/depsystem/app/securityServer/securityFilter/AuthenticationServerImpl.java similarity index 92% rename from app-service/src/main/java/com/depsystem/app/systemServer/securityServer/securityFilter/AuthenticationServerImpl.java rename to app-start/src/main/java/com/depsystem/app/securityServer/securityFilter/AuthenticationServerImpl.java index 25ce15c..0a86156 100644 --- a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/securityFilter/AuthenticationServerImpl.java +++ b/app-start/src/main/java/com/depsystem/app/securityServer/securityFilter/AuthenticationServerImpl.java @@ -5,17 +5,16 @@ * @apiNote */ -package com.depsystem.app.systemServer.securityServer.securityFilter; +package com.depsystem.app.securityServer.securityFilter; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.depsystem.app.loginServer.Login; import com.depsystem.app.loginServer.LoginDAO; import com.depsystem.app.loginServer.LoginMapper; -import com.depsystem.app.systemServer.securityServer.entity.MyUserDetails; +import com.depsystem.app.securityServer.entity.MyUserDetails; import com.depsystem.app.systemServer.util.ResultConvert; import jakarta.annotation.Resource; -import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; diff --git a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/securityFilter/JwtAuthenticationTokenFilter.java b/app-start/src/main/java/com/depsystem/app/securityServer/securityFilter/JwtAuthenticationTokenFilter.java similarity index 80% rename from app-service/src/main/java/com/depsystem/app/systemServer/securityServer/securityFilter/JwtAuthenticationTokenFilter.java rename to app-start/src/main/java/com/depsystem/app/securityServer/securityFilter/JwtAuthenticationTokenFilter.java index a0bd370..efc5bd3 100644 --- a/app-service/src/main/java/com/depsystem/app/systemServer/securityServer/securityFilter/JwtAuthenticationTokenFilter.java +++ b/app-start/src/main/java/com/depsystem/app/securityServer/securityFilter/JwtAuthenticationTokenFilter.java @@ -5,22 +5,18 @@ * @apiNote */ -package com.depsystem.app.systemServer.securityServer.securityFilter; +package com.depsystem.app.securityServer.securityFilter; import cn.hutool.core.util.StrUtil; -import com.depsystem.app.loginServer.Login; -import com.depsystem.app.systemServer.securityServer.entity.MyUserDetails; +import com.depsystem.app.securityServer.entity.MyUserDetails; +import com.depsystem.app.systemServer.util.CacheUtil; import com.depsystem.app.systemServer.util.JwtUtil; -import com.depsystem.app.systemServer.util.RedisUtil; -import io.jsonwebtoken.Claims; import jakarta.annotation.Resource; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.web.filter.OncePerRequestFilter; @@ -29,7 +25,7 @@ import java.util.Objects; public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { @Resource - RedisUtil redisUtil; + CacheUtil redisUtil; @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String token = request.getHeader("token"); diff --git a/app-start/src/main/resources/application.properties b/app-start/src/main/resources/application.properties index 5b614a0..6ea5dec 100644 --- a/app-start/src/main/resources/application.properties +++ b/app-start/src/main/resources/application.properties @@ -22,7 +22,6 @@ spring.data.redis.database=0 spring.data.redis.host=47.113.147.38 # Redis服务器连接端口 spring.data.redis.port=6379 -spring.data.redis.client-name=auth # Redis服务器连接密码(默认为空) spring.data.redis.password=adiao # 连接池最大连接数(使用负值表示没有限制) 默认 8 diff --git a/app-start/src/test/java/com/depsystem/app/AppApplicationTests.java b/app-start/src/test/java/com/depsystem/app/AppApplicationTests.java index c5795ce..5b7b99e 100644 --- a/app-start/src/test/java/com/depsystem/app/AppApplicationTests.java +++ b/app-start/src/test/java/com/depsystem/app/AppApplicationTests.java @@ -9,21 +9,20 @@ import cn.hutool.jwt.JWTUtil; import com.depsystem.app.loginServer.Login; import com.depsystem.app.loginServer.LoginDAO; import com.depsystem.app.loginServer.LoginMapper; -import com.depsystem.app.systemServer.securityServer.entity.MyUserDetails; + +import com.depsystem.app.securityServer.entity.MyUserDetails; +import com.depsystem.app.systemServer.util.Cache; +import com.depsystem.app.systemServer.util.CacheUtil; import com.depsystem.app.systemServer.util.JwtUtil; import com.depsystem.app.systemServer.util.ResultConvert; -import io.jsonwebtoken.Claims; + +import jakarta.annotation.Resource; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.authority.SimpleGrantedAuthority; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.core.userdetails.User; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; - -import java.io.UnsupportedEncodingException; import java.util.*; +import java.util.concurrent.TimeUnit; @SpringBootTest class AppApplicationTests { @@ -140,4 +139,23 @@ class AppApplicationTests { } + //@Resource + //CacheUtil cacheUtil; + + @Test + void CacheUtils() { + Map map = new HashMap<>(); + map.put("name","ds-dds"); + map.put("age",23); + map.put("iphone", "12312312123"); + //cacheUtil.set("sss",map,30); + //Object sss = cacheUtil.get("sss"); + //System.out.println(sss.toString()); + System.out.println("**************************************"); + Cache println = new Cache(); + println.add("myKey",map,10, TimeUnit.MINUTES); + String myKey = println.get("myKey"); + System.out.println(myKey); + } + } diff --git a/app-web/pom.xml b/app-web/pom.xml index 24c742f..161389a 100644 --- a/app-web/pom.xml +++ b/app-web/pom.xml @@ -20,6 +20,7 @@ org.springframework.boot spring-boot-starter-data-redis + 2.5.4 com.github.whvcse diff --git a/app-web/src/main/java/com/depsystem/app/demos/web/BasicController.java b/app-web/src/main/java/com/depsystem/app/demos/web/BasicController.java index 201f883..3b82914 100644 --- a/app-web/src/main/java/com/depsystem/app/demos/web/BasicController.java +++ b/app-web/src/main/java/com/depsystem/app/demos/web/BasicController.java @@ -16,10 +16,10 @@ package com.depsystem.app.demos.web; +import com.depsystem.app.loginServer.CaptchaVO; import com.depsystem.app.loginServer.Login; import com.depsystem.app.loginServer.LoginServerImpl; -import com.depsystem.app.systemServer.securityServer.securityVO.*; -import com.depsystem.app.systemServer.util.RedisUtil; +import com.depsystem.app.systemServer.util.CacheUtil; import com.depsystem.app.systemServer.util.ResponseResult; import com.wf.captcha.SpecCaptcha; import jakarta.annotation.Resource; @@ -55,7 +55,7 @@ public class BasicController { SpecCaptcha captcha = new SpecCaptcha(200,100,5); String code = captcha.text().toLowerCase(); String key = UUID.randomUUID().toString(); - RedisUtil redisUtil = new RedisUtil(); + CacheUtil redisUtil = new CacheUtil(); redisUtil.set(key,code,3); CaptchaVO captchaVO = new CaptchaVO(); captchaVO.setId(key);