update 转移 springboot-admin 到扩展模块项目
This commit is contained in:
parent
33ae270b0d
commit
1c11d7ccc1
1
pom.xml
1
pom.xml
|
@ -198,6 +198,7 @@
|
||||||
<module>ruoyi-generator</module>
|
<module>ruoyi-generator</module>
|
||||||
<module>ruoyi-common</module>
|
<module>ruoyi-common</module>
|
||||||
<module>ruoyi-demo</module>
|
<module>ruoyi-demo</module>
|
||||||
|
<module>ruoyi-extend</module>
|
||||||
</modules>
|
</modules>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,8 @@ logging:
|
||||||
|
|
||||||
# Spring配置
|
# Spring配置
|
||||||
spring:
|
spring:
|
||||||
|
application:
|
||||||
|
name: ${ruoyi.name}
|
||||||
# 资源信息
|
# 资源信息
|
||||||
messages:
|
messages:
|
||||||
# 国际化资源文件路径
|
# 国际化资源文件路径
|
||||||
|
@ -317,18 +319,16 @@ spring:
|
||||||
|
|
||||||
--- # 监控配置
|
--- # 监控配置
|
||||||
spring:
|
spring:
|
||||||
application:
|
|
||||||
name: ruoyi-vue-plus
|
|
||||||
boot:
|
boot:
|
||||||
admin:
|
admin:
|
||||||
# Spring Boot Admin Client 客户端的相关配置
|
# Spring Boot Admin Client 客户端的相关配置
|
||||||
client:
|
client:
|
||||||
# 设置 Spring Boot Admin Server 地址
|
# 设置 Spring Boot Admin Server 地址
|
||||||
url: http://localhost:${server.port}${spring.boot.admin.context-path}
|
url: http://localhost:9090/admin
|
||||||
instance:
|
instance:
|
||||||
prefer-ip: true # 注册实例时,优先使用 IP
|
prefer-ip: true # 注册实例时,优先使用 IP
|
||||||
# Spring Boot Admin Server 服务端的相关配置
|
username: ruoyi
|
||||||
context-path: /admin # 配置 Spring
|
password: 123456
|
||||||
|
|
||||||
# Actuator 监控端点的配置项
|
# Actuator 监控端点的配置项
|
||||||
management:
|
management:
|
||||||
|
@ -338,6 +338,7 @@ management:
|
||||||
base-path: /actuator
|
base-path: /actuator
|
||||||
exposure:
|
exposure:
|
||||||
# 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
|
# 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
|
||||||
|
# 生产环境不建议放开所有 根据项目需求放开即可
|
||||||
include: '*'
|
include: '*'
|
||||||
endpoint:
|
endpoint:
|
||||||
logfile:
|
logfile:
|
||||||
|
|
|
@ -116,10 +116,6 @@
|
||||||
<artifactId>feign-okhttp</artifactId>
|
<artifactId>feign-okhttp</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>de.codecentric</groupId>
|
|
||||||
<artifactId>spring-boot-admin-starter-server</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>de.codecentric</groupId>
|
<groupId>de.codecentric</groupId>
|
||||||
<artifactId>spring-boot-admin-starter-client</artifactId>
|
<artifactId>spring-boot-admin-starter-client</artifactId>
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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 监控启动成功" );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
server:
|
||||||
|
port: 9090
|
||||||
|
|
||||||
|
spring:
|
||||||
|
security:
|
||||||
|
user:
|
||||||
|
name: ruoyi
|
||||||
|
password: 123456
|
||||||
|
boot:
|
||||||
|
admin:
|
||||||
|
context-path: /admin
|
|
@ -1,63 +0,0 @@
|
||||||
package com.ruoyi.framework.config;
|
|
||||||
|
|
||||||
import de.codecentric.boot.admin.server.config.EnableAdminServer;
|
|
||||||
import org.springframework.beans.factory.ObjectProvider;
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
|
||||||
import org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties;
|
|
||||||
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 org.thymeleaf.dialect.IDialect;
|
|
||||||
import org.thymeleaf.spring5.ISpringTemplateEngine;
|
|
||||||
import org.thymeleaf.spring5.SpringTemplateEngine;
|
|
||||||
import org.thymeleaf.templateresolver.ITemplateResolver;
|
|
||||||
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.LinkedHashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.Executor;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 解决 admin 与 项目 页面的交叉引用 将 admin 的路由放到最后
|
|
||||||
* @param properties
|
|
||||||
* @param templateResolvers
|
|
||||||
* @param dialects
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Bean
|
|
||||||
@ConditionalOnMissingBean(ISpringTemplateEngine.class)
|
|
||||||
SpringTemplateEngine templateEngine(ThymeleafProperties properties,
|
|
||||||
ObjectProvider<ITemplateResolver> templateResolvers, ObjectProvider<IDialect> dialects) {
|
|
||||||
SpringTemplateEngine engine = new SpringTemplateEngine();
|
|
||||||
engine.setEnableSpringELCompiler(properties.isEnableSpringElCompiler());
|
|
||||||
engine.setRenderHiddenMarkersBeforeCheckboxes(properties.isRenderHiddenMarkersBeforeCheckboxes());
|
|
||||||
templateResolvers.orderedStream().forEach(engine::addTemplateResolver);
|
|
||||||
dialects.orderedStream().forEach(engine::addDialect);
|
|
||||||
Set<ITemplateResolver> templateResolvers1 = engine.getTemplateResolvers();
|
|
||||||
templateResolvers1 = templateResolvers1.stream()
|
|
||||||
.sorted(Comparator.comparing(ITemplateResolver::getOrder))
|
|
||||||
.collect(Collectors.toCollection(LinkedHashSet::new));
|
|
||||||
engine.setTemplateResolvers(templateResolvers1);
|
|
||||||
return engine;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -3,7 +3,6 @@ package com.ruoyi.framework.config;
|
||||||
import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter;
|
import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter;
|
||||||
import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl;
|
import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl;
|
||||||
import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.http.HttpMethod;
|
import org.springframework.http.HttpMethod;
|
||||||
|
@ -57,9 +56,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
|
||||||
@Autowired
|
@Autowired
|
||||||
private CorsFilter corsFilter;
|
private CorsFilter corsFilter;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AdminServerProperties adminServerProperties;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 解决 无法直接注入 AuthenticationManager
|
* 解决 无法直接注入 AuthenticationManager
|
||||||
*
|
*
|
||||||
|
@ -117,9 +113,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
|
||||||
.antMatchers("/webjars/**").anonymous()
|
.antMatchers("/webjars/**").anonymous()
|
||||||
.antMatchers("/*/api-docs").anonymous()
|
.antMatchers("/*/api-docs").anonymous()
|
||||||
.antMatchers("/druid/**").anonymous()
|
.antMatchers("/druid/**").anonymous()
|
||||||
// Spring Boot Admin Server 的安全配置
|
|
||||||
.antMatchers(adminServerProperties.getContextPath()).anonymous()
|
|
||||||
.antMatchers(adminServerProperties.getContextPath() + "/**").anonymous()
|
|
||||||
// Spring Boot Actuator 的安全配置
|
// Spring Boot Actuator 的安全配置
|
||||||
.antMatchers("/actuator").anonymous()
|
.antMatchers("/actuator").anonymous()
|
||||||
.antMatchers("/actuator/**").anonymous()
|
.antMatchers("/actuator/**").anonymous()
|
||||||
|
|
|
@ -8,7 +8,7 @@ export default {
|
||||||
name: "Admin",
|
name: "Admin",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
src: process.env.VUE_APP_BASE_API + "/admin",
|
src: "http://localhost:9090/admin/login",
|
||||||
height: document.documentElement.clientHeight - 94.5 + "px;",
|
height: document.documentElement.clientHeight - 94.5 + "px;",
|
||||||
loading: true
|
loading: true
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue