ReactiveSecurityContextHolder#getContext 返回一个空上下文

我尝试对用户进行身份验证(它有效)并从上下文中获取用户令牌,但它不起作用。


我有一个简单的微服务应用程序作为我的宠物项目,并使用 WebFlux 作为网络框架。我尝试调试ReactiveSecurityContextHolder#getContext并在flatMap中看到我的用户令牌在上下文中,但在我的应用程序中我钢有一个空上下文。


SecurityConfiguration.java


@EnableWebFluxSecurity

public 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中有一个空上下文


侃侃无极
浏览 237回答 1
1回答

LEATH

因此,经过调查和调试后,我找到了将流合并为单个流的原因。恕我直言,这并不是这个问题的原因,但现在它有效了。(...) getAuthHeaders()     .flatMap(authHeaders -> buildWebClient(url, authHeaders)                   .get() (...)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java