【问题标题】:Spring Boot Clients Not Deregistered from Spring Boot Admin when Spring Boot Instance Stopped当 Spring Boot 实例停止时,Spring Boot 客户端未从 Spring Boot Admin 注销
【发布时间】:2019-04-16 03:01:57
【问题描述】:

我们有 Spring Boot Admin Version-2.0.3 和相应的 Client 版本。

我们的 Spring Boot 实例已部署到 Pivotal Cloud Foundry。

在我们部署新版本的 Spring Boot 实例之前,一切都很好。为实例生成一个新的内部 url,并注册到管理员。但它并没有从管理员注销已删除的实例。

因此它使 Spring Boot 管理员处于不一致的状态。如:

如何让已注册的实例在被销毁时自行注销。

我试过设置:

spring.boot.admin.client.auto-deregistration = true

但它并没有像希望的那样工作。

【问题讨论】:

    标签: spring-boot cloud-foundry spring-boot-admin


    【解决方案1】:

    设置auto-deregistration=true 会导致您的客户端应用程序向端点/instances/{id} 上的服务器发送一个http 删除调用。在服务器上也必须为此端点禁用 Csrf 检查。 Spring Boot 管理文档中的示例安全配置中缺少此配置。 (见https://github.com/codecentric/spring-boot-admin/issues/1251
    要解决此问题,请替换

    .csrf()
    .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
    .ignoringAntMatchers(adminContextPath + "/instances", adminContextPath + "/actuator/**");
    

    .csrf()
    .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
    .ignoringRequestMatchers(
        new AntPathRequestMatcher(adminContextPath + "/instances", HttpMethod.POST.toString()),
        new AntPathRequestMatcher(adminContextPath + "/instances/*", HttpMethod.DELETE.toString()),
        new AntPathRequestMatcher(adminContextPath + "/actuator/**")
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-29
      • 2020-01-21
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 2016-04-01
      • 2015-08-26
      • 2022-11-28
      相关资源
      最近更新 更多