我尝试对用户进行身份验证(它有效)并从上下文中获取用户令牌,但它不起作用。我有一个简单的微服务应用程序作为我的宠物项目,并使用 WebFlux 作为网络框架。我尝试调试ReactiveSecurityContextHolder#getContext并在flatMap中看到我的用户令牌在上下文中,但在我的应用程序中我钢有一个空上下文。SecurityConfiguration.java@EnableWebFluxSecuritypublic class SecurityConfiguration { @Bean public SecurityWebFilterChain securityWebFilterChain( AuthenticationWebFilter authenticationWebFilter, ServerHttpSecurity http) { return http .csrf().disable() .httpBasic().disable() .formLogin().disable() .logout().disable() .addFilterAt(authenticationWebFilter, SecurityWebFiltersOrder.AUTHENTICATION) .authorizeExchange() .anyExchange().authenticated() .and() .build(); } @Bean public AuthenticationWebFilter authenticationWebFilter( SecurityTokenBasedAuthenticationManager authenticationManager, TokenAuthenticationConverter tokenAuthenticationConverter) { AuthenticationWebFilter authenticationWebFilter = new AuthenticationWebFilter(authenticationManager); authenticationWebFilter.setServerAuthenticationConverter(tokenAuthenticationConverter); authenticationWebFilter.setSecurityContextRepository(new WebSessionServerSecurityContextRepository()); return authenticationWebFilter; }}主要问题是在我的 WebClient 的构建内部 - 我希望我将拥有带有请求标头的完整 WebClient,但正如我上面所描述的 - 我在SecurityUtils.java中有一个空上下文
1 回答
LEATH
TA贡献1936条经验 获得超6个赞
因此,经过调查和调试后,我找到了将流合并为单个流的原因。恕我直言,这并不是这个问题的原因,但现在它有效了。
(...) getAuthHeaders() .flatMap(authHeaders -> buildWebClient(url, authHeaders) .get() (...)
添加回答
举报
0/150
提交
取消