SysConfigAutoConfiguration.java 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.kxs.system.biz.config;
  2. import cn.hutool.crypto.symmetric.AES;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import com.kxs.system.biz.event.SysLogListener;
  5. import com.kxs.system.biz.filter.RequestDecoderFilter;
  6. import com.kxs.common.core.constant.SecurityConstants;
  7. import com.kxs.common.log.config.LxqLogProperties;
  8. import com.kxs.system.biz.filter.ValidateCodeGatewayFilter;
  9. import com.kxs.system.biz.service.SysLogService;
  10. import lombok.RequiredArgsConstructor;
  11. import org.mybatis.spring.annotation.MapperScan;
  12. import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  13. import org.springframework.boot.context.properties.EnableConfigurationProperties;
  14. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  15. import org.springframework.context.annotation.Bean;
  16. import org.springframework.context.annotation.ComponentScan;
  17. import org.springframework.context.annotation.DependsOn;
  18. import org.springframework.data.redis.core.RedisTemplate;
  19. /**
  20. * @author lixueqiang
  21. */
  22. @ComponentScan(basePackages = "com.kxs.system")
  23. @MapperScan(basePackages = "com.kxs.system.biz.mapper")
  24. @EnableConfigurationProperties({AesConfigProperties.class, GatewayConfigProperties.class})
  25. @RequiredArgsConstructor
  26. public class SysConfigAutoConfiguration {
  27. private final AesConfigProperties aesConfigProperties;
  28. private final GatewayConfigProperties gatewayConfigProperties;
  29. @Bean
  30. public SysLogListener sysLogListener(SysLogService sysLogService, LxqLogProperties logProperties) {
  31. return new SysLogListener(sysLogService, logProperties);
  32. }
  33. @Bean
  34. public FilterRegistrationBean<ValidateCodeGatewayFilter> imageCodeFilterRegistration(RedisTemplate<String, Object> redisTemplate, ObjectMapper objectMapper) {
  35. FilterRegistrationBean<ValidateCodeGatewayFilter> registration = new FilterRegistrationBean<>();
  36. registration.setFilter(new ValidateCodeGatewayFilter(redisTemplate, objectMapper, gatewayConfigProperties));
  37. registration.addUrlPatterns(SecurityConstants.OAUTH_TOKEN_URL);
  38. registration.setOrder(Integer.MIN_VALUE);
  39. return registration;
  40. }
  41. /**
  42. * 加解密过滤器
  43. */
  44. @Bean
  45. @ConditionalOnProperty(name = "gateway.aes.enabled", matchIfMissing = true)
  46. @DependsOn("cryptoAes")
  47. public FilterRegistrationBean<RequestDecoderFilter> requestDecoderFilterRegistration(AES cryptoAes, ObjectMapper objectMapper) {
  48. FilterRegistrationBean<RequestDecoderFilter> registration = new FilterRegistrationBean<>();
  49. registration.setFilter(new RequestDecoderFilter(cryptoAes, objectMapper, aesConfigProperties));
  50. registration.addUrlPatterns("/*");
  51. registration.setOrder(Integer.MIN_VALUE + 1);
  52. return registration;
  53. }
  54. /**
  55. * <p>
  56. * aes加密配置 此处设在配置类可以避免每次请求都去创建加密类,以此节约性能
  57. * </p>
  58. * @return {@link AES}
  59. */
  60. @Bean
  61. public AES cryptoAes() {
  62. return new AES(aesConfigProperties.getEncodeMode(), aesConfigProperties.getEncodePadding(),
  63. // 密钥,可以自定义
  64. aesConfigProperties.getEncodeKey().getBytes(),
  65. // iv加盐,按照实际需求添加
  66. aesConfigProperties.getEncodeIv().getBytes());
  67. }
  68. }