VerifyCodeConfiguration.java
package cn.home1.oss.lib.security.starter;
import static cn.home1.oss.boot.autoconfigure.AppSecurityProperties.APP_SECURITY;
import static cn.home1.oss.boot.autoconfigure.AppType.MIXED;
import static cn.home1.oss.boot.autoconfigure.AppType.RESTFUL;
import static cn.home1.oss.boot.autoconfigure.AppType.TEMPLATE;
import static org.springframework.boot.autoconfigure.security.SecurityProperties.DEFAULT_FILTER_ORDER;
import cn.home1.oss.boot.autoconfigure.AppProperties;
import cn.home1.oss.boot.autoconfigure.AppSecurity;
import cn.home1.oss.boot.autoconfigure.ConditionalOnAppSecurity;
import cn.home1.oss.boot.autoconfigure.ConditionalOnAppType;
import cn.home1.oss.lib.security.internal.VerifyCodeFilter;
import cn.home1.oss.lib.security.internal.preauth.PreAuthTokenFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
/**
* Created by zhanghaolun on 16/8/19.
*/
@ConditionalOnAppSecurity(AppSecurity.ENABLED)
@ConditionalOnAppType({MIXED, RESTFUL, TEMPLATE})
@Configuration
@Order(VerifyCodeConfiguration.ORDER_VERIFY_CODE)
public class VerifyCodeConfiguration extends SecurityConfigurerAdapter<VerifyCodeConfiguration> {
public static final int ORDER_VERIFY_CODE = DEFAULT_FILTER_ORDER + 1;
@Autowired
private AppProperties appProperties;
@Override
public void configure(final HttpSecurity http) {
if (this.appProperties.getSecurity().getVerifyCode()) {
http.addFilterAfter(this.verifyCodeFilter(), PreAuthTokenFilter.class);
}
}
@Bean
@ConditionalOnProperty(prefix = APP_SECURITY, name = "verifyCode", havingValue = "true")
public VerifyCodeFilter verifyCodeFilter() { // TODO is filter bean ok, twice?
return new VerifyCodeFilter();
}
}