Переглянути джерело

优化登录验证代码,新增自定义用户名密码登录

mxd 4 роки тому
батько
коміт
1d44215a36

+ 16 - 2
src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIAutoConfiguration.java

@@ -35,6 +35,8 @@ import org.ssssssss.magicapi.config.*;
 import org.ssssssss.magicapi.controller.*;
 import org.ssssssss.magicapi.dialect.Dialect;
 import org.ssssssss.magicapi.exception.MagicAPIException;
+import org.ssssssss.magicapi.interceptor.AuthorizationInterceptor;
+import org.ssssssss.magicapi.interceptor.DefaultAuthorizationInterceptor;
 import org.ssssssss.magicapi.interceptor.RequestInterceptor;
 import org.ssssssss.magicapi.interceptor.SQLInterceptor;
 import org.ssssssss.magicapi.logging.LoggerManager;
@@ -74,6 +76,9 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 	@Autowired(required = false)
 	private final List<RequestInterceptor> requestInterceptors = Collections.emptyList();
 
+	@Autowired
+	private AuthorizationInterceptor authorizationInterceptor;
+
 	@Autowired(required = false)
 	private final List<SQLInterceptor> sqlInterceptors = Collections.emptyList();
 
@@ -196,6 +201,13 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 		return ResourceAdapter.getResource(resourceConfig.getLocation(), resourceConfig.isReadonly());
 	}
 
+	@Bean
+	@ConditionalOnMissingBean(AuthorizationInterceptor.class)
+	public AuthorizationInterceptor magicAuthorizationInterceptor() {
+		SecurityConfig securityConfig = properties.getSecurityConfig();
+		return new DefaultAuthorizationInterceptor(securityConfig.getUsername(), securityConfig.getPassword());
+	}
+
 	@Override
 	public void addResourceHandlers(ResourceHandlerRegistry registry) {
 		String web = properties.getWeb();
@@ -218,7 +230,8 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 
 	@Override
 	public void addInterceptors(InterceptorRegistry registry) {
-		registry.addInterceptor(new MagicWebRequestInterceptor(properties.isSupportCrossDomain() ? magicCorsFilter : null)).addPathPatterns("/**");
+		registry.addInterceptor(new MagicWebRequestInterceptor(properties.isSupportCrossDomain() ? magicCorsFilter : null, authorizationInterceptor))
+				.addPathPatterns("/**");
 	}
 
 
@@ -428,6 +441,7 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 		configuration.setMagicDynamicDataSource(magicDynamicDataSource);
 		configuration.setEditorConfig(properties.getEditorConfig());
 		configuration.setWorkspace(magicResource);
+		configuration.setAuthorizationInterceptor(authorizationInterceptor);
 		// 注册函数
 		this.magicFunctions.forEach(JavaReflection::registerFunction);
 		// 向页面传递配置信息时不传递用户名密码,增强安全性
@@ -475,7 +489,7 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer {
 		int refreshInterval = properties.getRefreshInterval();
 		// 自动刷新
 		mappingHandlerMapping.enableRefresh(refreshInterval);
-		if(refreshInterval > 0){
+		if (refreshInterval > 0) {
 			Executors.newScheduledThreadPool(1).scheduleAtFixedRate(dataSourceController::registerDataSource, refreshInterval, refreshInterval, TimeUnit.SECONDS);
 		}
 		return configuration;