【添加】用户没有权限的提示补充
【修改】redis的jackson配置修改,处理间发性的数据问题
This commit is contained in:
+21
-30
@@ -1,9 +1,9 @@
|
|||||||
package com.jero.common.modules.redis.config;
|
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.annotation.PropertyAccessor;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
import com.jero.common.constant.CacheConstant;
|
import com.jero.common.constant.CacheConstant;
|
||||||
import com.jero.common.constant.GlobalConstants;
|
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.ChannelTopic;
|
||||||
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
|
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
|
||||||
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
|
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
|
||||||
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
|
import org.springframework.data.redis.serializer.*;
|
||||||
import org.springframework.data.redis.serializer.RedisSerializationContext;
|
|
||||||
import org.springframework.data.redis.serializer.RedisSerializer;
|
|
||||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
@@ -46,6 +43,8 @@ public class RedisConfig extends CachingConfigurerSupport {
|
|||||||
@Resource
|
@Resource
|
||||||
private LettuceConnectionFactory lettuceConnectionFactory;
|
private LettuceConnectionFactory lettuceConnectionFactory;
|
||||||
|
|
||||||
|
private GenericJackson2JsonRedisSerializer jacksonSerializer = new GenericJackson2JsonRedisSerializer();
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * @description 自定义的缓存key的生成策略 若想使用这个key
|
// * @description 自定义的缓存key的生成策略 若想使用这个key
|
||||||
// * 只需要讲注解上keyGenerator的值设置为keyGenerator即可</br>
|
// * 只需要讲注解上keyGenerator的值设置为keyGenerator即可</br>
|
||||||
@@ -74,7 +73,7 @@ public class RedisConfig extends CachingConfigurerSupport {
|
|||||||
@Bean
|
@Bean
|
||||||
public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
|
public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
|
||||||
log.info(" --- redis config init --- ");
|
log.info(" --- redis config init --- ");
|
||||||
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = jacksonSerializer();
|
// Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = jacksonSerializer();
|
||||||
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
|
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
|
||||||
redisTemplate.setConnectionFactory(lettuceConnectionFactory);
|
redisTemplate.setConnectionFactory(lettuceConnectionFactory);
|
||||||
RedisSerializer<String> stringSerializer = new StringRedisSerializer();
|
RedisSerializer<String> stringSerializer = new StringRedisSerializer();
|
||||||
@@ -82,11 +81,11 @@ public class RedisConfig extends CachingConfigurerSupport {
|
|||||||
// key序列化
|
// key序列化
|
||||||
redisTemplate.setKeySerializer(stringSerializer);
|
redisTemplate.setKeySerializer(stringSerializer);
|
||||||
// value序列化
|
// value序列化
|
||||||
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
|
redisTemplate.setValueSerializer(this.jacksonSerializer);
|
||||||
// Hash key序列化
|
// Hash key序列化
|
||||||
redisTemplate.setHashKeySerializer(stringSerializer);
|
redisTemplate.setHashKeySerializer(stringSerializer);
|
||||||
// Hash value序列化
|
// Hash value序列化
|
||||||
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
|
redisTemplate.setHashValueSerializer(this.jacksonSerializer);
|
||||||
redisTemplate.afterPropertiesSet();
|
redisTemplate.afterPropertiesSet();
|
||||||
return redisTemplate;
|
return redisTemplate;
|
||||||
}
|
}
|
||||||
@@ -99,28 +98,19 @@ public class RedisConfig extends CachingConfigurerSupport {
|
|||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
public CacheManager cacheManager(LettuceConnectionFactory factory) {
|
public CacheManager cacheManager(LettuceConnectionFactory factory) {
|
||||||
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = jacksonSerializer();
|
// Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = jacksonSerializer();
|
||||||
// 配置序列化(解决乱码的问题),并且配置缓存默认有效期 6小时
|
// 配置序列化(解决乱码的问题),并且配置缓存默认有效期 6小时
|
||||||
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(6));
|
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(6));
|
||||||
RedisCacheConfiguration redisCacheConfiguration = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
|
RedisCacheConfiguration redisCacheConfiguration = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
|
||||||
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer));
|
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(this.jacksonSerializer));
|
||||||
//.disableCachingNullValues();
|
//.disableCachingNullValues();
|
||||||
|
|
||||||
// 以锁写入的方式创建RedisCacheWriter对象
|
// 以锁写入的方式创建RedisCacheWriter对象
|
||||||
//update-begin-author:taoyan date:20210316 for:注解CacheEvict根据key删除redis支持通配符*
|
//update-begin-author:taoyan date:20210316 for:注解CacheEvict根据key删除redis支持通配符*
|
||||||
RedisCacheWriter writer = new JeroRedisCacheWriter(factory, Duration.ofMillis(50L));
|
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)
|
RedisCacheManager cacheManager = RedisCacheManager.builder(writer).cacheDefaults(redisCacheConfiguration)
|
||||||
.withInitialCacheConfigurations(singletonMap(CacheConstant.SYS_DICT_TABLE_CACHE,
|
.withInitialCacheConfigurations(singletonMap(CacheConstant.SYS_DICT_TABLE_CACHE, RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(10)).disableCachingNullValues().serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(this.jacksonSerializer))))
|
||||||
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()))
|
|
||||||
.transactionAware().build();
|
.transactionAware().build();
|
||||||
//update-end-author:taoyan date:20210316 for:注解CacheEvict根据key删除redis支持通配符*
|
//update-end-author:taoyan date:20210316 for:注解CacheEvict根据key删除redis支持通配符*
|
||||||
return cacheManager;
|
return cacheManager;
|
||||||
@@ -144,18 +134,19 @@ public class RedisConfig extends CachingConfigurerSupport {
|
|||||||
@Bean
|
@Bean
|
||||||
MessageListenerAdapter commonListenerAdapter(RedisReceiver redisReceiver) {
|
MessageListenerAdapter commonListenerAdapter(RedisReceiver redisReceiver) {
|
||||||
MessageListenerAdapter messageListenerAdapter = new MessageListenerAdapter(redisReceiver, "onMessage");
|
MessageListenerAdapter messageListenerAdapter = new MessageListenerAdapter(redisReceiver, "onMessage");
|
||||||
messageListenerAdapter.setSerializer(jacksonSerializer());
|
messageListenerAdapter.setSerializer(this.jacksonSerializer);
|
||||||
return messageListenerAdapter;
|
return messageListenerAdapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Jackson2JsonRedisSerializer jacksonSerializer() {
|
// private Jackson2JsonRedisSerializer jacksonSerializer() {
|
||||||
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
|
// Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
|
||||||
ObjectMapper objectMapper = new ObjectMapper();
|
// ObjectMapper objectMapper = new ObjectMapper();
|
||||||
objectMapper.setVisibility(PropertyAccessor.ALL, Visibility.ANY);
|
// objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
|
||||||
objectMapper.enableDefaultTyping(DefaultTyping.NON_FINAL);
|
//// objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
|
||||||
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
|
// objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.EVERYTHING);
|
||||||
return jackson2JsonRedisSerializer;
|
// jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
|
||||||
}
|
// return jackson2JsonRedisSerializer;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 { welcome } from "@/utils/util"
|
||||||
import { queryPermissionsByUser } from '@/api/api'
|
import { queryPermissionsByUser } from '@/api/api'
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
|
import notification from 'ant-design-vue/lib/notification'
|
||||||
|
|
||||||
const user = {
|
const user = {
|
||||||
state: {
|
state: {
|
||||||
@@ -117,7 +118,7 @@ const user = {
|
|||||||
GetPermissionList({ commit }) {
|
GetPermissionList({ commit }) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
queryPermissionsByUser().then(response => {
|
queryPermissionsByUser().then(response => {
|
||||||
const menuData = response.result.menu;
|
const menuData = response.result.menu;
|
||||||
const authData = response.result.auth;
|
const authData = response.result.auth;
|
||||||
const allAuthData = response.result.allAuth;
|
const allAuthData = response.result.allAuth;
|
||||||
//Vue.ls.set(USER_AUTH,authData);
|
//Vue.ls.set(USER_AUTH,authData);
|
||||||
@@ -139,6 +140,10 @@ const user = {
|
|||||||
//update--end--autor:qinfeng-----date:20200109------for: 一级菜单的子菜单全部是隐藏路由,则一级菜单不显示------
|
//update--end--autor:qinfeng-----date:20200109------for: 一级菜单的子菜单全部是隐藏路由,则一级菜单不显示------
|
||||||
commit('SET_PERMISSIONLIST', menuData)
|
commit('SET_PERMISSIONLIST', menuData)
|
||||||
} else {
|
} else {
|
||||||
|
notification.error({
|
||||||
|
message: '系统提示',
|
||||||
|
description: '该用户无权限,请联系管理员!'
|
||||||
|
})
|
||||||
reject('getPermissionList: permissions must be a non-null array !')
|
reject('getPermissionList: permissions must be a non-null array !')
|
||||||
}
|
}
|
||||||
resolve(response)
|
resolve(response)
|
||||||
@@ -151,7 +156,7 @@ const user = {
|
|||||||
// 登出
|
// 登出
|
||||||
Logout({ commit, state }) {
|
Logout({ commit, state }) {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
let logoutToken = state.token;
|
let logoutToken = state.token;
|
||||||
commit('SET_TOKEN', '')
|
commit('SET_TOKEN', '')
|
||||||
commit('SET_PERMISSIONLIST', [])
|
commit('SET_PERMISSIONLIST', [])
|
||||||
Vue.ls.remove(ACCESS_TOKEN)
|
Vue.ls.remove(ACCESS_TOKEN)
|
||||||
@@ -168,6 +173,9 @@ const user = {
|
|||||||
window.location.href = process.env.VUE_APP_CAS_BASE_URL + '/logout?service=' + serviceUrl
|
window.location.href = process.env.VUE_APP_CAS_BASE_URL + '/logout?service=' + serviceUrl
|
||||||
}
|
}
|
||||||
resolve()
|
resolve()
|
||||||
|
setTimeout (() => {
|
||||||
|
location.reload();
|
||||||
|
}, 1000)
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user