Webflux Http 404 Ответ при добавлении заголовка в запрос - PullRequest
0 голосов
/ 19 декабря 2018

В настоящее время я пытаюсь переместить мое приложение с весенней загрузки 1.5.x на 2.xx на реактивном стеке.У меня странная проблема, которую я не могу понять.Надеюсь, кто-то знает решение этой проблемы.

Я реализовал API для получения токена пользователя jwt в качестве поля «Авторизация» в заголовке.API - это метод POST, который получает определенные данные JSON от пользователя в теле, отправляет их на сервер и обрабатывает их.К сожалению, я продолжаю получать ошибку http 404, когда добавляю в заголовок, обычную 200, когда я удаляю ее в почтальоне.Вот мой контроллер.

@RestController
@RequestMapping("/user")
@Slf4j
public class UserHandler {

    @Autowired
    private UserService service;

    @Autowired
    private Utility utility;

    @PostMapping("/updateLink")
    public Mono<ServerResponse> addNewAccountLinkAPI(@RequestHeader(name="Authorization") String id, @RequestBody UpdateAccountLink request){
        return Mono.just(request)
                .flatMap(s -> service.addNewAccountLink(s))
                .flatMap(s -> ok().body(BodyInserters.fromObject(new RespWrap("Success", new Date(), null, s))))
                .switchIfEmpty(badRequest().body(BodyInserters.fromObject(new RespWrap("Failed", new Date(), "Failed to create new link", null))));
    }
}

Вот моя простая конфигурация безопасности

@Configuration
@EnableWebFluxSecurity
@EnableWebFlux
public class ResourceServerConfig implements WebFluxConfigurer {

    @Bean
    public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http, FirebaseAuthenticationManager manager) {
        http
                .authorizeExchange().anyExchange().permitAll()
                .and().csrf().disable();
        return http.build();
    }
}

Может кто-нибудь, пожалуйста, укажите мне на проблему.Это похоже на проблему отсутствия конфигурации.

1 Ответ

0 голосов
/ 21 декабря 2018

Я вижу две проблемы с вашими фрагментами кода.

Во-первых, вы не должны добавлять @EnableWebFlux, поскольку это полностью отключает автоматическую настройку Spring Boot.То же самое касается @EnableWebMvc в приложении Spring MVC.

Во-вторых, вы смешиваете аннотации WebFlux и функционал WebFlux.Аннотации, которые вы используете, хороши, но тип ServerResponse следует использовать только при написании функциональных обработчиков .Вместо этого вы должны попытаться использовать ResponseEntity.

...