| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package com.kxs.system.biz.config;
- import cn.hutool.crypto.symmetric.AES;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.kxs.system.biz.event.SysLogListener;
- import com.kxs.system.biz.filter.RequestDecoderFilter;
- import com.kxs.common.core.constant.SecurityConstants;
- import com.kxs.common.log.config.LxqLogProperties;
- import com.kxs.system.biz.filter.ValidateCodeGatewayFilter;
- import com.kxs.system.biz.service.SysLogService;
- import lombok.RequiredArgsConstructor;
- import org.mybatis.spring.annotation.MapperScan;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
- import org.springframework.boot.context.properties.EnableConfigurationProperties;
- import org.springframework.boot.web.servlet.FilterRegistrationBean;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.ComponentScan;
- import org.springframework.context.annotation.DependsOn;
- import org.springframework.data.redis.core.RedisTemplate;
- /**
- * @author lixueqiang
- */
- @ComponentScan(basePackages = "com.kxs.system")
- @MapperScan(basePackages = "com.kxs.system.biz.mapper")
- @EnableConfigurationProperties({AesConfigProperties.class, GatewayConfigProperties.class})
- @RequiredArgsConstructor
- public class SysConfigAutoConfiguration {
- private final AesConfigProperties aesConfigProperties;
- private final GatewayConfigProperties gatewayConfigProperties;
- @Bean
- public SysLogListener sysLogListener(SysLogService sysLogService, LxqLogProperties logProperties) {
- return new SysLogListener(sysLogService, logProperties);
- }
- @Bean
- public FilterRegistrationBean<ValidateCodeGatewayFilter> imageCodeFilterRegistration(RedisTemplate<String, Object> redisTemplate, ObjectMapper objectMapper) {
- FilterRegistrationBean<ValidateCodeGatewayFilter> registration = new FilterRegistrationBean<>();
- registration.setFilter(new ValidateCodeGatewayFilter(redisTemplate, objectMapper, gatewayConfigProperties));
- registration.addUrlPatterns(SecurityConstants.OAUTH_TOKEN_URL);
- registration.setOrder(Integer.MIN_VALUE);
- return registration;
- }
- /**
- * 加解密过滤器
- */
- @Bean
- @ConditionalOnProperty(name = "gateway.aes.enabled", matchIfMissing = true)
- @DependsOn("cryptoAes")
- public FilterRegistrationBean<RequestDecoderFilter> requestDecoderFilterRegistration(AES cryptoAes, ObjectMapper objectMapper) {
- FilterRegistrationBean<RequestDecoderFilter> registration = new FilterRegistrationBean<>();
- registration.setFilter(new RequestDecoderFilter(cryptoAes, objectMapper, aesConfigProperties));
- registration.addUrlPatterns("/*");
- registration.setOrder(Integer.MIN_VALUE + 1);
- return registration;
- }
- /**
- * <p>
- * aes加密配置 此处设在配置类可以避免每次请求都去创建加密类,以此节约性能
- * </p>
- * @return {@link AES}
- */
- @Bean
- public AES cryptoAes() {
- return new AES(aesConfigProperties.getEncodeMode(), aesConfigProperties.getEncodePadding(),
- // 密钥,可以自定义
- aesConfigProperties.getEncodeKey().getBytes(),
- // iv加盐,按照实际需求添加
- aesConfigProperties.getEncodeIv().getBytes());
- }
- }
|