为了账号安全,请及时绑定邮箱和手机立即绑定

ReactiveSecurityContextHolder#getContext 返回一个空上下文

ReactiveSecurityContextHolder#getContext 返回一个空上下文

侃侃无极 2023-08-09 17:14:47
我尝试对用户进行身份验证(它有效)并从上下文中获取用户令牌,但它不起作用。我有一个简单的微服务应用程序作为我的宠物项目,并使用 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()
(...)


查看完整回答
反对 回复 2023-08-09
  • 1 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信