pom.xml
@@ -198,6 +198,7 @@ <module>ruoyi-generator</module> <module>ruoyi-common</module> <module>ruoyi-demo</module> <module>ruoyi-extend</module> </modules> <packaging>pom</packaging> ruoyi-admin/src/main/resources/application.yml
@@ -64,6 +64,8 @@ # Springé ç½® spring: application: name: ${ruoyi.name} # èµæºä¿¡æ¯ messages: # å½é åèµæºæä»¶è·¯å¾ @@ -317,18 +319,16 @@ --- # çæ§é ç½® spring: application: name: ruoyi-vue-plus boot: admin: # Spring Boot Admin Client 客æ·ç«¯çç¸å ³é ç½® client: # 设置 Spring Boot Admin Server å°å url: http://localhost:${server.port}${spring.boot.admin.context-path} url: http://localhost:9090/admin instance: prefer-ip: true # 注åå®ä¾æ¶ï¼ä¼å ä½¿ç¨ IP # Spring Boot Admin Server æå¡ç«¯çç¸å ³é ç½® context-path: /admin # é ç½® Spring username: ruoyi password: 123456 # Actuator çæ§ç«¯ç¹çé 置项 management: @@ -338,6 +338,7 @@ base-path: /actuator exposure: # éè¦å¼æ¾ç端ç¹ãé»è®¤å¼åªæå¼ health å info 两个端ç¹ãéè¿è®¾ç½® * ï¼å¯ä»¥å¼æ¾ææç«¯ç¹ã # ç产ç¯å¢ä¸å»ºè®®æ¾å¼ææ æ ¹æ®é¡¹ç®éæ±æ¾å¼å³å¯ include: '*' endpoint: logfile: ruoyi-common/pom.xml
@@ -118,10 +118,6 @@ <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> </dependency> ruoyi-extend/pom.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>ruoyi-vue-plus</artifactId> <groupId>com.ruoyi</groupId> <version>2.4.0</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>ruoyi-extend</artifactId> <packaging>pom</packaging> <modules> <module>ruoyi-monitor-admin</module> </modules> </project> ruoyi-extend/ruoyi-monitor-admin/pom.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>ruoyi-extend</artifactId> <groupId>com.ruoyi</groupId> <version>2.4.0</version> </parent> <modelVersion>4.0.0</modelVersion> <packaging>jar</packaging> <artifactId>ruoyi-monitor-admin</artifactId> <dependencies> <!-- SpringWeb模å --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- spring security å®å ¨è®¤è¯ --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> </dependency> </dependencies> </project> ruoyi-extend/ruoyi-monitor-admin/src/main/java/com/ruoyi/monitor/admin/MonitorAdminApplication.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.ruoyi.monitor.admin; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Admin çæ§å¯å¨ç¨åº * * @author Lion Li */ @SpringBootApplication public class MonitorAdminApplication { public static void main(String[] args) { SpringApplication.run(MonitorAdminApplication.class, args); System.out.println("Admin çæ§å¯å¨æå" ); } } ruoyi-extend/ruoyi-monitor-admin/src/main/java/com/ruoyi/monitor/admin/config/AdminServerConfig.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,31 @@ package com.ruoyi.monitor.admin.config; import de.codecentric.boot.admin.server.config.EnableAdminServer; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration; import org.springframework.boot.task.TaskExecutorBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.Executor; /** * springboot-admin serveré 置类 * * @author Lion Li */ @Configuration @EnableAdminServer public class AdminServerConfig { @Lazy @Bean(name = TaskExecutionAutoConfiguration.APPLICATION_TASK_EXECUTOR_BEAN_NAME) @ConditionalOnMissingBean(Executor.class) public ThreadPoolTaskExecutor applicationTaskExecutor(TaskExecutorBuilder builder) { return builder.build(); } } ruoyi-extend/ruoyi-monitor-admin/src/main/java/com/ruoyi/monitor/admin/config/SecurityConfig.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,48 @@ package com.ruoyi.monitor.admin.config; import de.codecentric.boot.admin.server.config.AdminServerProperties; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; /** * spring securityé ç½® * * @author ruoyi */ @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, proxyTargetClass = true) public class SecurityConfig extends WebSecurityConfigurerAdapter { private final String adminContextPath; public SecurityConfig(AdminServerProperties adminServerProperties) { this.adminContextPath = adminServerProperties.getContextPath(); } @Override protected void configure(HttpSecurity httpSecurity) throws Exception { SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setTargetUrlParameter("redirectTo"); successHandler.setDefaultTargetUrl(adminContextPath + "/"); httpSecurity.authorizeRequests() //æäºå¯¹ææéæèµäº§åç»å½é¡µé¢çå ¬å ±è®¿é®æéã .antMatchers(adminContextPath + "/assets/**").permitAll() .antMatchers(adminContextPath + "/login").permitAll() //å¿ é¡»å¯¹æ¯ä¸ªå ¶ä»è¯·æ±è¿è¡èº«ä»½éªè¯ .anyRequest().authenticated().and() //é ç½®ç»å½å注é .formLogin().loginPage(adminContextPath + "/login") .successHandler(successHandler).and() .logout().logoutUrl(adminContextPath + "/logout").and() //å¯ç¨HTTP-Basicæ¯æãè¿æ¯Spring Boot Admin Client注åæå¿ éç .httpBasic().and().csrf().disable() .headers().frameOptions().disable(); } } ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ server: port: 9090 spring: security: user: name: ruoyi password: 123456 boot: admin: context-path: /admin ruoyi-framework/src/main/java/com/ruoyi/framework/config/AdminServerConfig.java
ÎļþÒÑɾ³ý ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -3,7 +3,6 @@ import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl; import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; import de.codecentric.boot.admin.server.config.AdminServerProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.http.HttpMethod; @@ -56,9 +55,6 @@ */ @Autowired private CorsFilter corsFilter; @Autowired private AdminServerProperties adminServerProperties; /** * è§£å³ æ æ³ç´æ¥æ³¨å ¥ AuthenticationManager @@ -117,9 +113,6 @@ .antMatchers("/webjars/**").anonymous() .antMatchers("/*/api-docs").anonymous() .antMatchers("/druid/**").anonymous() // Spring Boot Admin Server çå®å ¨é ç½® .antMatchers(adminServerProperties.getContextPath()).anonymous() .antMatchers(adminServerProperties.getContextPath() + "/**").anonymous() // Spring Boot Actuator çå®å ¨é ç½® .antMatchers("/actuator").anonymous() .antMatchers("/actuator/**").anonymous() ruoyi-ui/src/views/monitor/admin/index.vue
@@ -8,7 +8,7 @@ name: "Admin", data() { return { src: process.env.VUE_APP_BASE_API + "/admin", src: "http://localhost:9090/admin/login", height: document.documentElement.clientHeight - 94.5 + "px;", loading: true };