From 106b6bd2a47c7f9b5fb67fb2fe9405d829a08bcf Mon Sep 17 00:00:00 2001 From: lizw-2015 <1183409807@qq.com> Date: Fri, 20 Jun 2025 10:39:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(security):=20=E6=B7=BB=E5=8A=A0=20Security?= =?UTF-8?q?Bootstrap=E5=AE=89=E5=85=A8=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 AppAutoConfiguration 中添加 SecurityBootstrap 配置 - 使用默认安全配置初始化 SecurityBootstrap - 新增认证、登录、登出和授权过滤器注册 bean - 在 VirtualCl2Connector 和 DashboardManager 中实现 Cl2Connector 接口方法 --- .../rcs/connector/cl2/VirtualCl2Connector.java | 24 +++++++++++ .../dashboard/DashboardManager.java | 24 +++++++++++ .../autoconfigure/AppAutoConfiguration.java | 50 ++++++++++++++++++++++ 3 files changed, 98 insertions(+) diff --git a/servo/src/main/java/com/galaxis/rcs/connector/cl2/VirtualCl2Connector.java b/servo/src/main/java/com/galaxis/rcs/connector/cl2/VirtualCl2Connector.java index 61f0386..d00e4e4 100644 --- a/servo/src/main/java/com/galaxis/rcs/connector/cl2/VirtualCl2Connector.java +++ b/servo/src/main/java/com/galaxis/rcs/connector/cl2/VirtualCl2Connector.java @@ -6,4 +6,28 @@ package com.galaxis.rcs.connector.cl2; */ public class VirtualCl2Connector implements Cl2Connector { + @Override + public int transport() { + return 0; + } + + @Override + public int pickup() { + return 0; + } + + @Override + public int unload() { + return 0; + } + + @Override + public int charge() { + return 0; + } + + @Override + public int lift() { + return 0; + } } diff --git a/servo/src/main/java/com/yvan/logisticsMonitor/dashboard/DashboardManager.java b/servo/src/main/java/com/yvan/logisticsMonitor/dashboard/DashboardManager.java index bf37a42..6e685fc 100644 --- a/servo/src/main/java/com/yvan/logisticsMonitor/dashboard/DashboardManager.java +++ b/servo/src/main/java/com/yvan/logisticsMonitor/dashboard/DashboardManager.java @@ -3,4 +3,28 @@ package com.yvan.logisticsMonitor.dashboard; import com.galaxis.rcs.connector.cl2.Cl2Connector; public class DashboardManager implements Cl2Connector { + @Override + public int transport() { + return 0; + } + + @Override + public int pickup() { + return 0; + } + + @Override + public int unload() { + return 0; + } + + @Override + public int charge() { + return 0; + } + + @Override + public int lift() { + return 0; + } } diff --git a/servo/src/main/java/com/yvan/workbench/autoconfigure/AppAutoConfiguration.java b/servo/src/main/java/com/yvan/workbench/autoconfigure/AppAutoConfiguration.java index c3cfc21..f47830f 100644 --- a/servo/src/main/java/com/yvan/workbench/autoconfigure/AppAutoConfiguration.java +++ b/servo/src/main/java/com/yvan/workbench/autoconfigure/AppAutoConfiguration.java @@ -22,6 +22,7 @@ import org.clever.core.task.StartupTaskBootstrap; import org.clever.data.jdbc.JdbcBootstrap; import org.clever.data.jdbc.config.JdbcConfig; import org.clever.data.redis.RedisBootstrap; +import org.clever.security.SecurityBootstrap; import org.clever.web.FilterRegistrar; import org.clever.web.JavalinAppDataKey; import org.clever.web.MvcBootstrap; @@ -35,6 +36,7 @@ import org.springframework.boot.context.properties.bind.Binder; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.DependsOn; import org.springframework.core.Ordered; import org.springframework.core.env.Environment; @@ -124,6 +126,14 @@ public class AppAutoConfiguration { return MvcBootstrap.create(appBasicsConfig.getRootPath(), jdbcConfig.getDefaultName(), environment); } + @DependsOn({"jdbcBootstrap", "redisBootstrap"}) + @Bean + public SecurityBootstrap securityBootstrap() { + SecurityBootstrap securityBootstrap = SecurityBootstrap.create(environment); + SecurityBootstrap.useDefaultSecurity(securityBootstrap.getSecurityConfig()); + return securityBootstrap; + } + // -------------------------------------------------------------------------------------------- // HttpFilter(servlet过滤器链) // @@ -218,6 +228,46 @@ public class AppAutoConfiguration { } @Bean + public FilterRegistrationBean authenticationFilter(SecurityBootstrap securityBootstrap) { + FilterRegistrationBean filterBean = new FilterRegistrationBean<>(); + filterBean.setOrder(Ordered.HIGHEST_PRECEDENCE + 700); + filterBean.addUrlPatterns(PathConstants.ALL); + filterBean.setName("AuthenticationFilter"); + filterBean.setFilter(new FilterAdapter(securityBootstrap.getAuthenticationFilter())); + return filterBean; + } + + @Bean + public FilterRegistrationBean loginFilter(SecurityBootstrap securityBootstrap) { + FilterRegistrationBean filterBean = new FilterRegistrationBean<>(); + filterBean.setOrder(Ordered.HIGHEST_PRECEDENCE + 800); + filterBean.addUrlPatterns(PathConstants.ALL); + filterBean.setName("LoginFilter"); + filterBean.setFilter(new FilterAdapter(securityBootstrap.getLoginFilter())); + return filterBean; + } + + @Bean + public FilterRegistrationBean logoutFilter(SecurityBootstrap securityBootstrap) { + FilterRegistrationBean filterBean = new FilterRegistrationBean<>(); + filterBean.setOrder(Ordered.HIGHEST_PRECEDENCE + 900); + filterBean.addUrlPatterns(PathConstants.ALL); + filterBean.setName("LogoutFilter"); + filterBean.setFilter(new FilterAdapter(securityBootstrap.getLogoutFilter())); + return filterBean; + } + + @Bean + public FilterRegistrationBean authorizationFilter(SecurityBootstrap securityBootstrap) { + FilterRegistrationBean filterBean = new FilterRegistrationBean<>(); + filterBean.setOrder(Ordered.HIGHEST_PRECEDENCE + 1000); + filterBean.addUrlPatterns(PathConstants.ALL); + filterBean.setName("AuthorizationFilter"); + filterBean.setFilter(new FilterAdapter(securityBootstrap.getAuthorizationFilter())); + return filterBean; + } + + @Bean public StaticResourceFilter rawStaticResourceFilter(AppBasicsConfig appBasicsConfig) { return StaticResourceFilter.create(appBasicsConfig.getRootPath(), environment); }