spring-security Spring Boot和千分尺:使用已验证用户标记血糖仪

polhcujo  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(104)

我尝试通过这种方式向微米Metric对象添加一个动态标签,但即使在其他服务中不是这样,经过身份验证的用户也总是为空。

@Bean
    public MeterFilter meterFilter() {
        return new MeterFilter() {
            @Override
            public Meter.Id map(Meter.Id id) {
                String uri = id.getTag("uri");
                if (uri != null && uri.contains("/api")) {
                    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
                    if (authentication != null) {
                        id.withTags(Tags.of("user", authentication.getName()));
                    }
                }
                return id;
            }
        };
    }

Authentication对象始终为空,因为SecurityContextHolder.clearContext()调用位于FilterChain的末尾

dphi5xsq

dphi5xsq1#

这可能不是一个好主意,因为用户名(主体)可能是高基数数据,请参阅本文了解更多详细信息:https://develotters.com/posts/high-cardinality/
您可以使用Exemplars将用户名附加到跨度并关联指标,而不是执行此操作。

相关问题