From 7c180f33be94729acc3a35882b291f7e694c8270 Mon Sep 17 00:00:00 2001 From: shimingxy Date: Fri, 15 May 2020 17:49:43 +0800 Subject: [PATCH] kaptcha --- .../java/org/maxkey/MaxKeyMgtApplication.java | 71 +++++++++++++++++-- .../main/java/org/maxkey/MaxKeyMgtConfig.java | 28 +------- .../main/resources/config/kaptcha.properties | 9 +++ .../resources/spring/maxkey-mgt-security.xml | 25 ------- .../src/main/resources/spring/maxkey-mgt.xml | 2 +- 5 files changed, 79 insertions(+), 56 deletions(-) create mode 100644 maxkey-web-manage/src/main/resources/config/kaptcha.properties diff --git a/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtApplication.java b/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtApplication.java index d690e3c51..eae2a17af 100644 --- a/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtApplication.java +++ b/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtApplication.java @@ -1,20 +1,34 @@ package org.maxkey; +import java.io.IOException; import java.util.Date; +import java.util.Properties; import javax.servlet.ServletException; +import org.maxkey.authn.SavedRequestAwareAuthenticationSuccessHandler; +import org.maxkey.crypto.password.PasswordReciprocal; import org.maxkey.web.InitializeContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.server.ConfigurableWebServerFactory; +import org.springframework.boot.web.server.ErrorPage; +import org.springframework.boot.web.server.WebServerFactoryCustomizer; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ImportResource; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpStatus; + +import com.google.code.kaptcha.Producer; +import com.google.code.kaptcha.impl.DefaultKaptcha; +import com.google.code.kaptcha.util.Config; @SpringBootApplication @ImportResource(locations={"classpath:spring/maxkey-mgt.xml"}) @@ -25,11 +39,6 @@ import org.springframework.context.annotation.ImportResource; public class MaxKeyMgtApplication extends SpringBootServletInitializer { private static final Logger _logger = LoggerFactory.getLogger(MaxKeyMgtApplication.class); - @Bean - MaxKeyMgtConfig MaxKeyMgtConfig() { - return new MaxKeyMgtConfig(); - } - public static void main(String[] args) { System.out.println("MaxKeyMgtApplication"); @@ -54,5 +63,57 @@ public class MaxKeyMgtApplication extends SpringBootServletInitializer { return application.sources(MaxKeyMgtApplication.class); } + + @Bean + MaxKeyMgtConfig MaxKeyMgtConfig() { + return new MaxKeyMgtConfig(); + } + + /** + * 配置默认错误页面(仅用于内嵌tomcat启动时) + * 使用这种方式,在打包为war后不起作用 + * + * @return + */ + @Bean + public WebServerFactoryCustomizer webServerFactoryCustomizer() { + return new WebServerFactoryCustomizer() { + @Override + public void customize(ConfigurableWebServerFactory factory) { + ErrorPage errorPage400 = new ErrorPage(HttpStatus.BAD_REQUEST,"/exception/error/400"); + ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND,"/exception/error/404"); + ErrorPage errorPage500 = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR,"/exception/error/500"); + factory.addErrorPages(errorPage400, errorPage404,errorPage500); + + } + }; + } + + @Bean(name = "passwordReciprocal") + public PasswordReciprocal passwordReciprocal() { + return new PasswordReciprocal(); + } + + @Bean(name = "savedRequestSuccessHandler") + public SavedRequestAwareAuthenticationSuccessHandler SavedRequestAwareAuthenticationSuccessHandler() { + return new SavedRequestAwareAuthenticationSuccessHandler(); + } + + /** + * Captcha Producer Config . + * @return Producer + * @throws IOException + */ + @Bean(name = "captchaProducer") + public Producer captchaProducer() throws IOException{ + Resource resource = new ClassPathResource("config/kaptcha.properties"); + _logger.debug("Kaptcha config file " + resource.getURL()); + DefaultKaptcha kaptcha=new DefaultKaptcha(); + Properties properties = new Properties(); + properties.load(resource.getInputStream()); + Config config = new Config(properties); + kaptcha.setConfig(config); + return kaptcha; + } } diff --git a/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtConfig.java b/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtConfig.java index 5ab28fcec..285a14b34 100644 --- a/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtConfig.java +++ b/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtConfig.java @@ -1,19 +1,15 @@ package org.maxkey; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.web.server.ConfigurableWebServerFactory; -import org.springframework.boot.web.server.ErrorPage; -import org.springframework.boot.web.server.WebServerFactoryCustomizer; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; -import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Component; @Configuration -@Component @PropertySource("classpath:/application.properties") public class MaxKeyMgtConfig { + private static final Logger _logger = LoggerFactory.getLogger(MaxKeyMgtConfig.class); @Value("${server.port:8080}") private int port; @@ -25,23 +21,5 @@ public class MaxKeyMgtConfig { this.port = port; } - /** - * 配置默认错误页面(仅用于内嵌tomcat启动时) - * 使用这种方式,在打包为war后不起作用 - * - * @return - */ - @Bean - public WebServerFactoryCustomizer webServerFactoryCustomizer() { - return new WebServerFactoryCustomizer() { - @Override - public void customize(ConfigurableWebServerFactory factory) { - ErrorPage errorPage400 = new ErrorPage(HttpStatus.BAD_REQUEST,"/exception/error/400"); - ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND,"/exception/error/404"); - ErrorPage errorPage500 = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR,"/exception/error/500"); - factory.addErrorPages(errorPage400, errorPage404,errorPage500); - } - }; - } } diff --git a/maxkey-web-manage/src/main/resources/config/kaptcha.properties b/maxkey-web-manage/src/main/resources/config/kaptcha.properties new file mode 100644 index 000000000..ed39b3c30 --- /dev/null +++ b/maxkey-web-manage/src/main/resources/config/kaptcha.properties @@ -0,0 +1,9 @@ +kaptcha.image.width=80 +kaptcha.image.height=25 +kaptcha.border=no +kaptcha.obscurificator.impl=com.google.code.kaptcha.impl.ShadowGimpy +kaptcha.textproducer.font.size=23 +kaptcha.textproducer.char.string=0123456789 +kaptcha.textproducer.char.length=4 +kaptcha.noise.impl=com.google.code.kaptcha.impl.NoNoise +#kaptcha.noise.color=white \ No newline at end of file diff --git a/maxkey-web-manage/src/main/resources/spring/maxkey-mgt-security.xml b/maxkey-web-manage/src/main/resources/spring/maxkey-mgt-security.xml index 6fece911a..b6d850a34 100644 --- a/maxkey-web-manage/src/main/resources/spring/maxkey-mgt-security.xml +++ b/maxkey-web-manage/src/main/resources/spring/maxkey-mgt-security.xml @@ -113,31 +113,6 @@ - - - - - - - - - 80 - 25 - no - com.google.code.kaptcha.impl.ShadowGimpy - 23 - 0123456789 - 4 - com.google.code.kaptcha.impl.NoNoise - - - - - - - - -