VerifyCodeConfiguration.java

  1. package cn.home1.oss.lib.security.starter;

  2. import static cn.home1.oss.boot.autoconfigure.AppSecurityProperties.APP_SECURITY;
  3. import static cn.home1.oss.boot.autoconfigure.AppType.MIXED;
  4. import static cn.home1.oss.boot.autoconfigure.AppType.RESTFUL;
  5. import static cn.home1.oss.boot.autoconfigure.AppType.TEMPLATE;
  6. import static org.springframework.boot.autoconfigure.security.SecurityProperties.DEFAULT_FILTER_ORDER;

  7. import cn.home1.oss.boot.autoconfigure.AppProperties;
  8. import cn.home1.oss.boot.autoconfigure.AppSecurity;
  9. import cn.home1.oss.boot.autoconfigure.ConditionalOnAppSecurity;
  10. import cn.home1.oss.boot.autoconfigure.ConditionalOnAppType;
  11. import cn.home1.oss.lib.security.internal.VerifyCodeFilter;
  12. import cn.home1.oss.lib.security.internal.preauth.PreAuthTokenFilter;

  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  15. import org.springframework.context.annotation.Bean;
  16. import org.springframework.context.annotation.Configuration;
  17. import org.springframework.core.annotation.Order;
  18. import org.springframework.security.config.annotation.web.builders.HttpSecurity;

  19. /**
  20.  * Created by zhanghaolun on 16/8/19.
  21.  */

  22. @ConditionalOnAppSecurity(AppSecurity.ENABLED)
  23. @ConditionalOnAppType({MIXED, RESTFUL, TEMPLATE})
  24. @Configuration
  25. @Order(VerifyCodeConfiguration.ORDER_VERIFY_CODE)
  26. public class VerifyCodeConfiguration extends SecurityConfigurerAdapter<VerifyCodeConfiguration> {

  27.   public static final int ORDER_VERIFY_CODE = DEFAULT_FILTER_ORDER + 1;

  28.   @Autowired
  29.   private AppProperties appProperties;

  30.   @Override
  31.   public void configure(final HttpSecurity http) {
  32.     if (this.appProperties.getSecurity().getVerifyCode()) {
  33.       http.addFilterAfter(this.verifyCodeFilter(), PreAuthTokenFilter.class);
  34.     }
  35.   }

  36.   @Bean
  37.   @ConditionalOnProperty(prefix = APP_SECURITY, name = "verifyCode", havingValue = "true")
  38.   public VerifyCodeFilter verifyCodeFilter() { // TODO is filter bean ok, twice?
  39.     return new VerifyCodeFilter();
  40.   }
  41. }