diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/config/AuthServerConfig.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/config/AuthServerConfig.java index 53bb2cf8..818c4b4b 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/config/AuthServerConfig.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/config/AuthServerConfig.java @@ -118,22 +118,17 @@ public class AuthServerConfig extends AuthorizationServerConfigurerAdapter @Bean public TokenEnhancer tokenEnhancer() { - return new TokenEnhancer() - { - @Override - public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) + return (accessToken,authentication)->{ + if (accessToken instanceof DefaultOAuth2AccessToken) { - if (accessToken instanceof DefaultOAuth2AccessToken) - { - DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken) accessToken; - LoginUser user = (LoginUser) authentication.getUserAuthentication().getPrincipal(); - Map additionalInformation = new LinkedHashMap(); - additionalInformation.put(SecurityConstants.DETAILS_USERNAME, authentication.getName()); - additionalInformation.put(SecurityConstants.DETAILS_USER_ID, user.getUserId()); - token.setAdditionalInformation(additionalInformation); - } - return accessToken; - }; + DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken) accessToken; + LoginUser user = (LoginUser) authentication.getUserAuthentication().getPrincipal(); + Map additionalInformation = new LinkedHashMap(); + additionalInformation.put(SecurityConstants.DETAILS_USERNAME, authentication.getName()); + additionalInformation.put(SecurityConstants.DETAILS_USER_ID, user.getUserId()); + token.setAdditionalInformation(additionalInformation); + } + return accessToken; }; } } diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/FastJson2JsonRedisSerializer.java b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/FastJson2JsonRedisSerializer.java deleted file mode 100644 index 012eeb8e..00000000 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/FastJson2JsonRedisSerializer.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.ruoyi.common.redis.configure; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.serializer.SerializerFeature; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.type.TypeFactory; -import org.springframework.data.redis.serializer.RedisSerializer; -import org.springframework.data.redis.serializer.SerializationException; -import com.alibaba.fastjson.parser.ParserConfig; -import org.springframework.util.Assert; -import java.nio.charset.Charset; - -/** - * Redis使用FastJson序列化 - * - * @author ruoyi - */ -public class FastJson2JsonRedisSerializer implements RedisSerializer -{ - @SuppressWarnings("unused") - private ObjectMapper objectMapper = new ObjectMapper(); - - public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); - - private Class clazz; - - static - { - ParserConfig.getGlobalInstance().setAutoTypeSupport(true); - } - - public FastJson2JsonRedisSerializer(Class clazz) - { - super(); - this.clazz = clazz; - } - - @Override - public byte[] serialize(T t) throws SerializationException - { - if (t == null) - { - return new byte[0]; - } - return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET); - } - - @Override - public T deserialize(byte[] bytes) throws SerializationException - { - if (bytes == null || bytes.length <= 0) - { - return null; - } - String str = new String(bytes, DEFAULT_CHARSET); - - return JSON.parseObject(str, clazz); - } - - public void setObjectMapper(ObjectMapper objectMapper) - { - Assert.notNull(objectMapper, "'objectMapper' must not be null"); - this.objectMapper = objectMapper; - } - - protected JavaType getJavaType(Class clazz) - { - return TypeFactory.defaultInstance().constructType(clazz); - } -} diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java index 0499feb6..698ca0a6 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java @@ -1,11 +1,16 @@ package com.ruoyi.common.redis.configure; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; 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.StringRedisSerializer; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; @@ -21,23 +26,20 @@ import com.fasterxml.jackson.databind.ObjectMapper; public class RedisConfig extends CachingConfigurerSupport { @Bean - @SuppressWarnings(value = { "unchecked", "rawtypes", "deprecation" }) - public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) - { - RedisTemplate template = new RedisTemplate<>(); - template.setConnectionFactory(connectionFactory); - - FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class); - - ObjectMapper mapper = new ObjectMapper(); - mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); - mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); - serializer.setObjectMapper(mapper); - - template.setValueSerializer(serializer); - // 使用StringRedisSerializer来序列化和反序列化redis的key值 - template.setKeySerializer(new StringRedisSerializer()); - template.afterPropertiesSet(); - return template; + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance , + ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); + objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + jackson2JsonRedisSerializer.setObjectMapper(objectMapper); + redisTemplate.setKeySerializer(new StringRedisSerializer()); + redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); + redisTemplate.afterPropertiesSet(); + return redisTemplate; } } diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/OAuth2FeignConfig.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/OAuth2FeignConfig.java index e5c598b2..36fb8576 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/OAuth2FeignConfig.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/OAuth2FeignConfig.java @@ -1,8 +1,14 @@ package com.ruoyi.common.security.feign; +import com.ruoyi.common.core.constant.SecurityConstants; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import feign.RequestInterceptor; +import org.springframework.http.HttpHeaders; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails; /** * Feign配置注册 @@ -10,11 +16,17 @@ import feign.RequestInterceptor; * @author ruoyi **/ @Configuration -public class OAuth2FeignConfig -{ +public class OAuth2FeignConfig { @Bean - public RequestInterceptor requestInterceptor() - { - return new OAuth2FeignRequestInterceptor(); + public RequestInterceptor requestInterceptor() { + return (requestTemplate) -> { + SecurityContext securityContext = SecurityContextHolder.getContext(); + Authentication authentication = securityContext.getAuthentication(); + if (authentication != null && authentication.getDetails() instanceof OAuth2AuthenticationDetails) { + OAuth2AuthenticationDetails dateils = (OAuth2AuthenticationDetails) authentication.getDetails(); + requestTemplate.header(HttpHeaders.AUTHORIZATION, + String.format("%s %s", SecurityConstants.BEARER_TOKEN_TYPE, dateils.getTokenValue())); + } + }; } } diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/OAuth2FeignRequestInterceptor.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/OAuth2FeignRequestInterceptor.java deleted file mode 100644 index baf60835..00000000 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/feign/OAuth2FeignRequestInterceptor.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.ruoyi.common.security.feign; - -import org.springframework.http.HttpHeaders; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContext; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails; -import org.springframework.stereotype.Component; -import com.ruoyi.common.core.constant.SecurityConstants; -import feign.RequestInterceptor; -import feign.RequestTemplate; - -/** - * feign 请求拦截器 - * - * @author ruoyi - */ -@Component -public class OAuth2FeignRequestInterceptor implements RequestInterceptor -{ - @Override - public void apply(RequestTemplate requestTemplate) - { - SecurityContext securityContext = SecurityContextHolder.getContext(); - Authentication authentication = securityContext.getAuthentication(); - if (authentication != null && authentication.getDetails() instanceof OAuth2AuthenticationDetails) - { - OAuth2AuthenticationDetails dateils = (OAuth2AuthenticationDetails) authentication.getDetails(); - requestTemplate.header(HttpHeaders.AUTHORIZATION, - String.format("%s %s", SecurityConstants.BEARER_TOKEN_TYPE, dateils.getTokenValue())); - } - } -} \ No newline at end of file diff --git a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/annotation/EnableCustomSwagger2.java b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/annotation/EnableCustomSwagger2.java index 6832fe1b..5d121236 100644 --- a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/annotation/EnableCustomSwagger2.java +++ b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/annotation/EnableCustomSwagger2.java @@ -9,6 +9,10 @@ import java.lang.annotation.Target; import org.springframework.context.annotation.Import; import com.ruoyi.common.swagger.config.SwaggerAutoConfiguration; +/** + * 这个注解应该说没啥用处,因为在引入这个starter以后,就已经会去加载swagger + * 再多写一个注解根本就没用,只能通过配置文件设置是否使用swagger + */ @Target({ ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) @Documented