From 6e980be4453d7b2b9738b9e142fafe22c887f889 Mon Sep 17 00:00:00 2001 From: zer0Black <694429613@qq.com> Date: Fri, 8 Apr 2022 00:09:46 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=B7=BB=E5=8A=A0=E3=80=91=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=B2=A1=E6=9C=89=E6=9D=83=E9=99=90=E7=9A=84=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E8=A1=A5=E5=85=85=20=E3=80=90=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E3=80=91redis=E7=9A=84jackson=E9=85=8D=E7=BD=AE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E5=A4=84=E7=90=86=E9=97=B4=E5=8F=91=E6=80=A7?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/redis/config/RedisConfig.java | 51 ++++++++----------- jero-web/src/store/modules/user.js | 12 ++++- 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/jero-boot/jero-boot-base/jero-boot-base-tools/src/main/java/com/jero/common/modules/redis/config/RedisConfig.java b/jero-boot/jero-boot-base/jero-boot-base-tools/src/main/java/com/jero/common/modules/redis/config/RedisConfig.java index 4a08911b..775284f5 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-tools/src/main/java/com/jero/common/modules/redis/config/RedisConfig.java +++ b/jero-boot/jero-boot-base/jero-boot-base-tools/src/main/java/com/jero/common/modules/redis/config/RedisConfig.java @@ -1,9 +1,9 @@ package com.jero.common.modules.redis.config; -import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; +import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; import lombok.extern.slf4j.Slf4j; import com.jero.common.constant.CacheConstant; import com.jero.common.constant.GlobalConstants; @@ -23,10 +23,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.listener.ChannelTopic; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.data.redis.listener.adapter.MessageListenerAdapter; -import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; -import org.springframework.data.redis.serializer.RedisSerializationContext; -import org.springframework.data.redis.serializer.RedisSerializer; -import org.springframework.data.redis.serializer.StringRedisSerializer; +import org.springframework.data.redis.serializer.*; import javax.annotation.Resource; import java.time.Duration; @@ -46,6 +43,8 @@ public class RedisConfig extends CachingConfigurerSupport { @Resource private LettuceConnectionFactory lettuceConnectionFactory; + private GenericJackson2JsonRedisSerializer jacksonSerializer = new GenericJackson2JsonRedisSerializer(); + // /** // * @description 自定义的缓存key的生成策略 若想使用这个key // * 只需要讲注解上keyGenerator的值设置为keyGenerator即可
@@ -74,7 +73,7 @@ public class RedisConfig extends CachingConfigurerSupport { @Bean public RedisTemplate redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) { log.info(" --- redis config init --- "); - Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = jacksonSerializer(); +// Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = jacksonSerializer(); RedisTemplate redisTemplate = new RedisTemplate(); redisTemplate.setConnectionFactory(lettuceConnectionFactory); RedisSerializer stringSerializer = new StringRedisSerializer(); @@ -82,11 +81,11 @@ public class RedisConfig extends CachingConfigurerSupport { // key序列化 redisTemplate.setKeySerializer(stringSerializer); // value序列化 - redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); + redisTemplate.setValueSerializer(this.jacksonSerializer); // Hash key序列化 redisTemplate.setHashKeySerializer(stringSerializer); // Hash value序列化 - redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); + redisTemplate.setHashValueSerializer(this.jacksonSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; } @@ -99,28 +98,19 @@ public class RedisConfig extends CachingConfigurerSupport { */ @Bean public CacheManager cacheManager(LettuceConnectionFactory factory) { - Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = jacksonSerializer(); +// Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = jacksonSerializer(); // 配置序列化(解决乱码的问题),并且配置缓存默认有效期 6小时 RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(6)); RedisCacheConfiguration redisCacheConfiguration = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())) - .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)); + .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(this.jacksonSerializer)); //.disableCachingNullValues(); // 以锁写入的方式创建RedisCacheWriter对象 //update-begin-author:taoyan date:20210316 for:注解CacheEvict根据key删除redis支持通配符* RedisCacheWriter writer = new JeroRedisCacheWriter(factory, Duration.ofMillis(50L)); - //RedisCacheWriter.lockingRedisCacheWriter(factory); // 创建默认缓存配置对象 - /* 默认配置,设置缓存有效期 1小时*/ - //RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(1)); - /* 自定义配置test:demo 的超时时间为 5分钟*/ RedisCacheManager cacheManager = RedisCacheManager.builder(writer).cacheDefaults(redisCacheConfiguration) - .withInitialCacheConfigurations(singletonMap(CacheConstant.SYS_DICT_TABLE_CACHE, - RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(10)).disableCachingNullValues() - .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)))) - .withInitialCacheConfigurations(singletonMap(CacheConstant.TEST_DEMO_CACHE, RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(5)).disableCachingNullValues())) - .withInitialCacheConfigurations(singletonMap(CacheConstant.PLUGIN_MALL_RANKING, RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(24)).disableCachingNullValues())) - .withInitialCacheConfigurations(singletonMap(CacheConstant.PLUGIN_MALL_PAGE_LIST, RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(24)).disableCachingNullValues())) + .withInitialCacheConfigurations(singletonMap(CacheConstant.SYS_DICT_TABLE_CACHE, RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(10)).disableCachingNullValues().serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(this.jacksonSerializer)))) .transactionAware().build(); //update-end-author:taoyan date:20210316 for:注解CacheEvict根据key删除redis支持通配符* return cacheManager; @@ -144,18 +134,19 @@ public class RedisConfig extends CachingConfigurerSupport { @Bean MessageListenerAdapter commonListenerAdapter(RedisReceiver redisReceiver) { MessageListenerAdapter messageListenerAdapter = new MessageListenerAdapter(redisReceiver, "onMessage"); - messageListenerAdapter.setSerializer(jacksonSerializer()); + messageListenerAdapter.setSerializer(this.jacksonSerializer); return messageListenerAdapter; } - private Jackson2JsonRedisSerializer jacksonSerializer() { - Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.setVisibility(PropertyAccessor.ALL, Visibility.ANY); - objectMapper.enableDefaultTyping(DefaultTyping.NON_FINAL); - jackson2JsonRedisSerializer.setObjectMapper(objectMapper); - return jackson2JsonRedisSerializer; - } +// private Jackson2JsonRedisSerializer jacksonSerializer() { +// Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); +// ObjectMapper objectMapper = new ObjectMapper(); +// objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); +//// objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); +// objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.EVERYTHING); +// jackson2JsonRedisSerializer.setObjectMapper(objectMapper); +// return jackson2JsonRedisSerializer; +// } } diff --git a/jero-web/src/store/modules/user.js b/jero-web/src/store/modules/user.js index f1f05982..98a71bee 100644 --- a/jero-web/src/store/modules/user.js +++ b/jero-web/src/store/modules/user.js @@ -4,6 +4,7 @@ import { ACCESS_TOKEN, USER_NAME,USER_INFO,USER_AUTH,SYS_BUTTON_AUTH,UI_CACHE_DB import { welcome } from "@/utils/util" import { queryPermissionsByUser } from '@/api/api' import { getAction } from '@/api/manage' +import notification from 'ant-design-vue/lib/notification' const user = { state: { @@ -117,7 +118,7 @@ const user = { GetPermissionList({ commit }) { return new Promise((resolve, reject) => { queryPermissionsByUser().then(response => { - const menuData = response.result.menu; + const menuData = response.result.menu; const authData = response.result.auth; const allAuthData = response.result.allAuth; //Vue.ls.set(USER_AUTH,authData); @@ -139,6 +140,10 @@ const user = { //update--end--autor:qinfeng-----date:20200109------for: 一级菜单的子菜单全部是隐藏路由,则一级菜单不显示------ commit('SET_PERMISSIONLIST', menuData) } else { + notification.error({ + message: '系统提示', + description: '该用户无权限,请联系管理员!' + }) reject('getPermissionList: permissions must be a non-null array !') } resolve(response) @@ -151,7 +156,7 @@ const user = { // 登出 Logout({ commit, state }) { return new Promise((resolve) => { - let logoutToken = state.token; + let logoutToken = state.token; commit('SET_TOKEN', '') commit('SET_PERMISSIONLIST', []) Vue.ls.remove(ACCESS_TOKEN) @@ -168,6 +173,9 @@ const user = { window.location.href = process.env.VUE_APP_CAS_BASE_URL + '/logout?service=' + serviceUrl } resolve() + setTimeout (() => { + location.reload(); + }, 1000) }).catch(() => { resolve() })