Spring Cloud 微服务(九)- 集成 Spring Boot Admin
时间:2022-07-22
本文章向大家介绍Spring Cloud 微服务(九)- 集成 Spring Boot Admin,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文简单介绍在项目中集成 spring-boot-admin。
SBA(spring-boot-admin) 可简单理解为一个 UI 组件,提供 Endpoint
接口数据的界面展示。
1. 创建项目
创建 peacetrue-microservice-admin-server
项目,作为 eureka 客户端。然后添加依赖 implementation 'de.codecentric:spring-boot-admin-starter-server:2.3.0-SNAPSHOT'
,作为 admin 服务端。
2. 改造 Spring Security
Spring Security 默认的登陆页面如下:
Figure 1. 默认的登陆页面
参考 SBA官方文档 实现的 Reactive 版本:
WebFluxSecurityConfig
@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http,
AdminServerProperties adminServer) {
http.authorizeExchange(exchanges -> exchanges
.matchers(EndpointRequest.to(HealthEndpoint.class, InfoEndpoint.class)).permitAll()
.pathMatchers(adminServer.path("/assets/**")).permitAll()
.pathMatchers(adminServer.path("/login")).permitAll()
.anyExchange().authenticated()
);
http.formLogin()
.loginPage(adminServer.path("/login"))
.authenticationSuccessHandler(new RedirectServerAuthenticationSuccessHandler(adminServer.path("/")));
http.logout().logoutUrl(adminServer.path("/logout"));
http.httpBasic(withDefaults());
http.csrf().csrfTokenRepository(CookieServerCsrfTokenRepository.withHttpOnlyFalse())
.requireCsrfProtectionMatcher(new AndServerWebExchangeMatcher(
CsrfWebFilter.DEFAULT_CSRF_MATCHER,
new NegatedServerWebExchangeMatcher(EndpointRequest.toAnyEndpoint()),
new NegatedServerWebExchangeMatcher(ServerWebExchangeMatchers.pathMatchers(HttpMethod.POST, adminServer.path("/instances"))),
new NegatedServerWebExchangeMatcher(ServerWebExchangeMatchers.pathMatchers(HttpMethod.DELETE, adminServer.path("/instances/*"))),
new NegatedServerWebExchangeMatcher(ServerWebExchangeMatchers.pathMatchers(adminServer.path("/actuator/*")))
));
return http.build();
}
改造后,SBA 的登陆页面如下:
Figure 2. SBA登陆页面
登陆后会提示 CSRF Token has been associated to this client,原因是 CsrfWebFilter
配合 CookieServerCsrfTokenRepository
设置 Cookie 存在 BUG [1]。
忽略登陆的 CSRF 拦截后,可以正常登陆,但还是有其他功能受影响,所以直接禁用 CSRF:http.csrf().disable();
。
3. 效果展示
Figure 3. 应用墙
Figure 4. 应用列表
Figure 5. 内存使用情况
Figure 6. 修改日志级别
修改日志级别这个功能很好用。
1. https://github.com/spring-projects/spring-security/issues/5766
- H5动画开发快车道
- Open vSwith模拟网关实现不同子网的互通
- 总结了一些指针易出错的常见问题(二)
- 史上最清晰的红黑树讲解(上)
- C++之new/delete/malloc/free详解
- 验证 结构体指针与自增运算符
- Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失下篇
- ONOS1.3.0集群实验
- Spring Boot下的TDD(测试驱动开发)
- MySQL的索引是什么?怎么优化?
- C语言之函数
- ElasticSearch搜索引擎在SpringBoot中的实践
- 消费者驱动的微服务契约测试套件Spring Cloud Contract
- 使用Spring Boot开发一个Spring Mobile程序
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Python应用实现双指数函数及拟合代码实例
- 浅谈django不使用restframework自定义接口与使用的区别
- 实例解析php的数据类型
- 实现PHP中session存储及删除变量
- php微信公众号开发之秒杀
- php fread函数使用方法总结
- Yii2框架控制器、路由、Url生成操作示例
- Laravel框架实现调用百度翻译API功能示例
- phpstudy2018升级MySQL5.5为5.7教程(图文)
- laravel实现简单用户权限的示例代码
- tp5(thinkPHP5框架)时间查询操作实例分析
- PHP使Laravel为JSON REST API返回自定义错误的问题
- 详解PHP PDO简单教程
- Python实现ElGamal加密算法的示例代码
- PHP实现基于状态的责任链审批模式详解